我有 varnish 4 服务器使用 nginx 作为连接到 ELB 的反向代理。
每 2 天左右我的服务器停止响应,我在 nginx access.log 中看到 499 个响应
重启 nginx 解决了这个问题。
为什么我开始收到这些 499 回复?
为什么重启nginx解决了这个问题?
我有 varnish 4 服务器使用 nginx 作为连接到 ELB 的反向代理。
每 2 天左右我的服务器停止响应,我在 nginx access.log 中看到 499 个响应
重启 nginx 解决了这个问题。
为什么我开始收到这些 499 回复?
为什么重启nginx解决了这个问题?
在了解了两个事实后,我解决了我的问题:
1) ELB 实例具有动态 DNS 名称
2) nginx 仅在重新加载/重启时解析 DNS 名称
问题是 ELB 更改了它的 IP 地址,而 nginx 保留了旧的 IP 地址。
解决方案是在 nginx.conf 中使用解析器。这是我的 nginx.conf:
http {
resolver x.x.x.x valid=30s;
}
server {
set $elb "example.com";
location / {
proxy_pass http://$elb;
}
}
解析器 IP 地址应该是 /etc/resolv.conf 中的 DNS 服务器。