Nginx反向代理到另外一台服务器,域名解析IP变更后连接超时

WilliamSha 发布于 2014/11/16 12:22
阅读 3K+
收藏 2
location ~ .* {
        pro xy_pass http://www.example.com/;
        proxy_set_header X-Real-IP $remote_addr;
}

之前www.example.com是解析到IP为A的,由于后端服务器IP变更为B,并且域名解析也改成了B,现在再访问时Nginx出现502或504等Gateway Time-out错误,查看nginx的error.log(如下)发现nginx连接的IP还是以前的IP A,除非重启Nginx才会正常。

2014/11/16 12:03:41 [error] 9531#0: *12264 upstream timed out (110: Connection timed out) while connecting to upstream, client: 14.209.152.128, server: 127.0.0.1, request: "GET / HTTP/1.0", upstream: "http://A/", host: "127.0.0.1"


这种情况怎么设置Nginx对域名解析变更做出第一时间的反应呢?


加载中
0
zigzagroad
zigzagroad
如果Nginx没有缓存DNS结果的话,可以清除系统的DNS缓存即可
0
WilliamSha
WilliamSha

引用来自“yaray”的评论

如果Nginx没有缓存DNS结果的话,可以清除系统的DNS缓存即可
telnet能通,ping域名的时候IP是B,就是Nginx还是转发到A了,应该是Nginx缓存了域名和IP的映射。
zigzagroad
zigzagroad
如果确定是这种情况的话,那就手动重新加载Nginx吧,毕竟IP也不会经常变化
0
caotian
caotian

最好在hosts里指定被代理的域名和ip对,也就是手动添加解析,否则dns解析什么时候变化不确定,而且代理的网站多的话,只要有一组域名dns解析失败,nginx就会停止运行

0
魔法刀客
魔法刀客
你把你公司的机房的ip暴露了,晕
0
WilliamSha
WilliamSha

引用来自“魔法刀客”的评论

你把你公司的机房的ip暴露了,晕
那个是我家的IP地址。
0
淡定的wo
淡定的wo

用域名是最不济的方法。会造成各种问题,比如慢、不稳定等等。

别想偷懒,老老实实用ip,更新ip后更新conf配置。或者用hosts文件也行。

返回顶部
顶部