如何配置NGINX作为反向代理服务器来缓存后端服务的响应?

大家好,我是锋哥。今天分享关于【如何配置NGINX作为反向代理服务器来缓存后端服务的响应?】**面试题。**希望对大家有帮助;

如何配置NGINX作为反向代理服务器来缓存后端服务的响应?

1000道 互联网大厂Java工程师 精选面试题-Java资源分享网

要配置 NGINX 作为反向代理服务器并缓存后端服务的响应,可以按照以下步骤进行操作:

1. 安装 NGINX

首先,确保 NGINX 已经安装在你的服务器上。如果还没有安装,可以使用以下命令:

Debian/Ubuntu:

复制代码
sudo apt update
sudo apt install nginx

CentOS/RHEL:

复制代码
sudo yum install nginx

2. 配置反向代理

接下来,你需要编辑 NGINX 配置文件,配置反向代理服务。默认情况下,NGINX 配置文件位于 /etc/nginx/nginx.conf,或在 /etc/nginx/sites-available/ 目录下。

编辑配置文件(假设配置文件路径是 /etc/nginx/sites-available/default):

复制代码
sudo nano /etc/nginx/sites-available/default

server 块中配置反向代理,并添加缓存相关指令:

复制代码
server {
    listen 80;

    server_name yourdomain.com;

    location / {
        proxy_pass http://backend_server_ip_or_domain;  # 后端服务地址
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # 启用缓存
        proxy_cache my_cache;
        proxy_cache_valid 200 1h;  # 设置200响应的缓存时间为1小时
        proxy_cache_valid 404 1m;  # 设置404响应的缓存时间为1分钟
        proxy_cache_use_stale error timeout updating;  # 如果后端服务不可用,使用陈旧缓存
        proxy_cache_revalidate on;  # 启用缓存重验证
    }
}

3. 配置缓存

在 NGINX 配置文件中,你需要定义缓存的路径和缓存区域。你可以在 http 块中设置缓存路径:

复制代码
http {
    # 配置缓存区域
    proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;
    
    # 其他配置...
}
  • /var/cache/nginx: 缓存文件存储路径。
  • keys_zone=my_cache:10m: 定义一个名为 my_cache 的缓存区域,大小为 10MB。
  • max_size=1g: 缓存的最大空间为 1GB。
  • inactive=60m: 如果缓存中某个文件超过 60 分钟未被访问,则会被清除。
  • use_temp_path=off: 禁止使用临时路径存储缓存文件。

4. 设置缓存清理策略

你可以根据实际需求设置缓存清理策略。例如,设置不同状态码响应的缓存有效期,常见的策略如下:

复制代码
proxy_cache_valid 200 1h;  # 200 状态码的缓存有效期为1小时
proxy_cache_valid 301 302 1d;  # 重定向状态码的缓存有效期为1天
proxy_cache_valid 404 1m;  # 404 状态码的缓存有效期为1分钟

5. 测试配置和重载 NGINX

配置完成后,可以使用以下命令测试 NGINX 配置是否正确:

复制代码
sudo nginx -t

如果没有错误,重新加载 NGINX 使配置生效:

复制代码
sudo systemctl reload nginx

6. 查看缓存内容

缓存文件将存储在 /var/cache/nginx 目录中。你可以定期检查该目录,查看缓存文件的状态。

7. 配置客户端缓存(可选)

如果你希望客户端也缓存某些内容,可以通过添加 Cache-Control 头部来实现:

复制代码
location / {
    proxy_pass http://backend_server;
    proxy_set_header Cache-Control "public, max-age=3600";  # 客户端缓存1小时
}

通过以上配置,NGINX 将会作为反向代理服务器,将请求转发到后端服务,同时缓存返回的响应,减少后续请求的负载和响应时间。

相关推荐
酷ku的森1 小时前
Redis中的Zset数据类型
数据库·redis·缓存
牧羊狼的狼4 小时前
React 中的 HOC 和 Hooks
前端·javascript·react.js·hooks·高阶组件·hoc
知识分享小能手5 小时前
React学习教程,从入门到精通, React 属性(Props)语法知识点与案例详解(14)
前端·javascript·vue.js·学习·react.js·vue·react
魔云连洲5 小时前
深入解析:Vue与React的异步批处理更新机制
前端·vue.js·react.js
mCell6 小时前
JavaScript 的多线程能力:Worker
前端·javascript·浏览器
超级无敌攻城狮7 小时前
3 分钟学会!波浪文字动画超详细教程,从 0 到 1 实现「思考中 / 加载中」高级效果
前端
excel8 小时前
用 TensorFlow.js Node 实现猫图像识别(教学版逐步分解)
前端
gnip9 小时前
JavaScript事件流
前端·javascript
利刃大大9 小时前
【高并发内存池】五、页缓存的设计
c++·缓存·项目·内存池
赵得C9 小时前
【前端技巧】Element Table 列标题如何优雅添加 Tooltip 提示?
前端·elementui·vue·table组件