当前位置: 首页 > news >正文

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

相关文章:

  • 微信小程序 自定义组件 标签管理
  • [SoC]AXI总线Performance验证方案
  • 【AI面试准备】Git与CI/CD及单元测试实战指南
  • [Linux]从零开始的STM32MP157 Buildroot根文件系统构建
  • mindyolo填坑
  • 如何利用dify 生成Fine‑tune 需要的Alpaca 格式数据
  • 正则表达式与文本三剑客grep、sed、awk
  • linux指令中的竖线(“|”)是干啥的?【含实例展示】
  • 数据库系统概论|第五章:数据库完整性—课程笔记1
  • 【服务器通信-socket】——int socket(int domain, int type, int protocol);
  • DBeaver连接人大金仓数据库V9
  • 上位机知识篇---PSRAM和RAM
  • 【算法基础】三指针排序算法 - JAVA
  • Google机器学习系列 - 监督学习
  • 50.【必备】二分答案法与相关题目
  • 玩转Docker(一):基本概念
  • STM32——GPIO
  • JAVA继承详细总结
  • MySQL 窗口函数
  • 解决Flutter项目中Gradle构建Running Gradle task ‘assembleDebug‘卡顿问题的终极指南
  • 马上评|提供情绪价值,也是文旅经济的软实力
  • 德雷克海峡发生7.4级地震,震源深度10千米
  • 国内锂矿“双雄”开局业绩PK:从巨亏中崛起,或深陷泥淖谋求多元转型
  • 看纪录片抵学分,贺桂梅:纪录片是对抗低质碎片信息的好媒介
  • 微博:严厉打击对肖某董某事件蹭炒热点、编造故事博流量等行为
  • 铺就长三角南北“交通动脉”,乍嘉苏改高速扩建项目首桩入位