如何配置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 将会作为反向代理服务器,将请求转发到后端服务,同时缓存返回的响应,减少后续请求的负载和响应时间。

相关推荐
achene_ql1 分钟前
缓存置换:用c++实现最不经常使用(LFU)算法
c++·算法·缓存
尽兴-3 分钟前
缓存分片哈希 vs 一致性哈希:优缺点、区别对比及适用场景(图示版)
算法·缓存·哈希算法
黄同学real1 小时前
ES6 知识点整理
前端·javascript·es6
裁二尺秋风1 小时前
Nginx — http、server、location模块下配置相同策略优先级问题
运维·nginx·http
JQLvopkk1 小时前
c#读取txt指定行
java·前端·c#
姜太小白2 小时前
【前端】CSS实现div双背景图叠加
前端·css
程序猿阿伟2 小时前
《缓存策略:移动应用网络请求的“效能密钥” 》
网络·缓存
安冬的码畜日常2 小时前
【玩转 JS 函数式编程_016】DIY 实战:巧用延续传递风格(CPS)重构倒计时特效逻辑
开发语言·前端·javascript·重构·函数式编程·cps风格·延续传递风格
观无2 小时前
Nginx部署Vue+ElementPlus应用案例(基于腾讯云)
前端·javascript·vue.js
WenGyyyL3 小时前
《Android 应用开发基础教程》——第十一章:Android 中的图片加载与缓存(Glide 使用详解)
android·缓存·glide