很多情况下我们都是
proxyPass http://mydomain/path/xxxx
但是这样会存在一个问题,这个mydomain后面的实际机器ip或vip发生变化时,nginx仍然会向原来的ip/vip转发,除非重启nginx。
正确的做法是:
set $host mydomain
proxyPass http://$host/path/xxxx
这样在mydomain对应的ip/vip发生变化时,nginx虽然会有几次缓存,但很快会解析到新的ip/vip而不用重启。
原理相当于配置文件在启动时进行编译,proxyPass http://mydomain/path/xxxx这种方式是编译成静态的,直接替换成它解析到的ip/vip,只有重新启动时才会重新解析。
而
set $host mydomain
proxyPass http://$host/path/xxxx这种方式是动态变量,每次使用都是对变量进行解析(『每次』实际上可能有缓存,但更新很快)。

本文探讨了Nginx中使用proxyPass指令时常见的配置问题,并提出了一种改进的方法来解决当目标域名对应的IP地址变化时,Nginx无法自动更新转发地址的问题。通过使用set指令设置动态变量,可以实现更灵活且无需重启的服务地址变更。
8014

被折叠的 条评论
为什么被折叠?



