我正在尝试使用 nginx 将传入连接传递到另一台服务器(我这样做的原因是连接来自无法进行 DNS 解析的主机,而最终应该接收流量的服务器需要由 DNS 解析)。我正在使用以下配置:
stream {
resolver 127.0.0.1 valid=1s;
upstream server_us {
server server.foo.com:22222;
}
server {
listen 11111;
proxy_pass server_us;
}
}
Run Code Online (Sandbox Code Playgroud)
我不明白为什么名称解析没有按照“valid”指令指定的那样过期。(即,如果我更改 /etc/hosts 中 server.foo.com 的 IP,nginx 无法识别该更改)。我究竟做错了什么?
Nginx 在启动时解析文字域名并永久缓存解析的 IP。
\n指令中有用于重新解析域名的resolve
参数server
,但它仅在商业订阅中可用。
常见的 \xe2\x80\x9chack\xe2\x80\x9d 是在中使用变量proxy_pass
(但不能使用upstream
指令)。
\n\n也可以使用变量指定地址
\n[...]
\n在这种情况下,将在所描述的服务器组中搜索服务器名称,如果未找到,则使用 来确定
\nresolver
。
例如
\nstream {\n resolver 127.0.0.1 valid=1s;\n\n # a hack to declare $server_us variable\n map "" $server_us {\n default server.foo.com:22222;\n }\n\n server {\n listen 11111;\n proxy_pass $server_us;\n }\n}\n
Run Code Online (Sandbox Code Playgroud)\n
归档时间: |
|
查看次数: |
6534 次 |
最近记录: |