【干货,实战经验】nginx缓存问题
文章目录
- 案例背景
- 出现的问题:
- 定位到问题
- 解决方式
- 修改配置
- 修改后的nginx配置
案例背景
有2个服务器A 和B,A是一个动态ip经常变公网ip,B是一个云服务器,公网ip固定.
于是我通过ddns ,找了个域名C,动态解析A服务器上的公网ip。
A服务器公网ip所在服务器里面部署了个api接口服务A-1,
在B服务器上部署了个前端应用B-1,和nginx,
在nginx中通过访问/api前缀,以proxy_pass的方式转发到A服务器的的应用A-1, 通过这个域名的方式请求.
出现的问题:
现在出的问题是:
A服务器的ip动态变了,域名解析也变了,但是请求A-1的接口失败,需要重启nginx服务才生效。
定位到问题
Nginx的DNS缓存机制未及时更新动态IP变化
解决方式
修改配置
原来的nginx配置
location /sse-api/ {
proxy_pass http://development.xx.com:7890/api # 添加/api/后缀
proxy_set_header Host $http_host;
}
修改后的nginx配置
location /sse-api/ { # 大模型 - 后台接口
resolver 8.8.8.8 223.5.5.5 valid=10s; # 使用Google DNS,每10秒刷新解析
set $backend_host "development.xx.com:7890"; # 仅域名+端口
proxy_pass http://$backend_host/api/; # 添加/api/后缀
proxy_set_header Host $http_host;
}
**参数解释
- resolver:指定DNS服务器,可替换为阿里云DNS(如223.5.5.5)或运营商DNS。
- valid=10s:设置DNS缓存有效期为10秒,超时后自动重新解析。
- 变更A服务器IP后,等待10秒,Nginx自动解析新IP。
大功告成!!