Nginx 可以做反向代理,如果在做反向代理的时候目标服务是域名,并且域名解析有可能变更的情况下,单纯的使用 proxy_pass
proxy_pass http://domain:port/path
可能会在域名解析变更的时候产生问题。
在 Nginx 启动的时候会做域名解析,然后吧IP缓存起来以后会一直使用解析到的IP并且不会再更改,除非重新启动 Nginx,如果目标服务器采用的类似 AWS ELB 的技术就必然会产生问题。
解决方案如下:
获取服务器的DNS服务器IP
cat /etc/resolv.conf
设置 Nginx
resolver 10.0.0.2 valid=30s; set $backends "http://domain:port/path"; proxy_pass $backends;
这样每30秒 Nginx 就会重新解析域名