http://nginx.org/en/docs/http/ngx_http_upstream_module.html
NGINX 在 1.5.12 里的新功能,如果用域名作为 upstream 里的 server 地址,那么可以加上 resolve 参数让 NGINX 来追踪这个地址的解析变化。
upstream example_backend {
server www.example.com:80 resolve;
}
1
cevincheung 2015-02-05 00:23:26 +08:00
1.0.6在http段有resolve参数
http { resolve 8.8.8.8; } |
2
LazyZhu 2015-02-05 00:23:37 +08:00
需要设置 http 的 resolver
resolver 8.8.8.8; |
3
cevincheung 2015-02-05 00:24:08 +08:00
update:
是location段 resolver 8.8.8.8 |
4
Livid MOD OP 抱歉,刚才实际测试了一下之后发现,这个功能只在 NGINX 商业版里有。
Additionally, the following parameters are available as part of our commercial subscription. |
5
aveline 2015-02-05 00:31:19 +08:00 2
|
6
Livid MOD OP |
8
shixinyu 2015-02-05 09:51:42 +08:00
|
9
fannheyward 2015-02-05 10:02:18 +08:00
如果 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 |
10
wwek 2015-02-05 10:03:16 +08:00
这个功能好. 不用我老是去重启了```
|
12
wwek 2015-02-05 10:04:33 +08:00
|
13
qq286735628 2015-02-05 10:11:18 +08:00
'NGINX 来追踪这个地址的解析变化'是做什么用的?缓存DNS解析这步?那直接upstream一个IP呢?
|
14
wwek 2015-02-05 10:18:52 +08:00
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; } } |
15
wwek 2015-02-05 10:20:19 +08:00 1
@qq286735628 upstream 指定的域名解析有变动.nginx默认是不会去追踪的.
1\应用场景,upstream用的域名,而这个时候又修改了解析 2\比如我这里用3322动态dns,解析了新的ip 3\其他 |
16
wwek 2015-02-05 10:23:46 +08:00 1
@qq286735628 直接 upstream ip当然就不存在这个问题了.
|
17
qq286735628 2015-02-05 12:36:19 +08:00
@wwek 原来是这样
|
18
ryd994 2015-02-05 15:41:03 +08:00 via Android
@qq286735628 总之就是不买商业你就要手动改upstream。有resolve的话,如果服务器多,就可以直接改DNS,自动同步下去了
|