NGINX 在 1.5.12 里的新功能,如果用域名作为 upstream 里的 server 地址,那么可以加上 resolve 参数让 NGINX 来追踪这个地址的解析变化。
upstream example_backend {
server www.example.com:80 resolve;
}
1.0.6在http段有resolve参数
http {
resolve 8.8.8.8;
}
需要设置 http 的 resolver
resolver 8.8.8.8;
update:
是location段
resolver 8.8.8.8
抱歉,刚才实际测试了一下之后发现,这个功能只在 NGINX 商业版里有。
Additionally, the following parameters are available as part of our commercial subscription.
可以试试这个 module
https://github.com/GUI/nginx-upstream-dyanmic-servers
多谢分享。
就是我还需要测一下这个 issue:
https://github.com/GUI/nginx-upstream-dyanmic-servers/issues/1
商业版价格多少?
https://cs.nginx.com/cart
如果 upstream 只有一个地址,可以通过变量方式强制解析
resolver 8.8.8.8;
set $backend "foo.example.com";
proxy_pass http://$backend;
via http://forum.nginx.org/read.php?2,215830,215832#msg-215832
这个功能好. 不用我老是去重启了```
啊,奥商业版``
不知道淘宝的支持否`
谢谢`
'NGINX 来追踪这个地址的解析变化'是做什么用的?缓存DNS解析这步?那直接upstream一个IP呢?
server
{
listen 80;
server_name xxxx.3322.org;
resolver 8.8.8.8;
set $backend " xxxx.3322.org";
location / {
proxy_pass http://$backend:2222;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
}
}
upstream 指定的域名解析有变动.nginx默认是不会去追踪的.
1\应用场景,upstream用的域名,而这个时候又修改了解析
2\比如我这里用3322动态dns,解析了新的ip
3\其他
直接 upstream ip当然就不存在这个问题了.
原来是这样
总之就是不买商业你就要手动改upstream。有resolve的话,如果服务器多,就可以直接改DNS,自动同步下去了