我最近遇到了一个问题,由于 Nginx 中的 DNS 缓存,我们使用了upstream
相关 Nginx 配置中的设置,导致服务受到负面影响。我已经查看了以下问题并寻找解决方案,但均未使用upstream
:https://stackoverflow.com/questions/26956979/error-with-ip-and-nginx-as-reverse-proxy。由于我们使用 AWS ELB,因此我们识别了位于上游的两个相同服务器值。相关部分如下所示:
upstream my_server {
server blah.domain.com:443;
server blah.domain.com:443;
}
server {
listen 1024;
access_log /var/log/nginx/my-access-log.log;
error_log /var/log/nginx/my-error-log.log;
keepalive_timeout 5;
client_max_body_size 40M;
location /blah {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host blah.domain.com;
proxy_redirect off;
proxy_pass https://my_server;
}
因此,我知道我可以使用解析器并创建一个 http 部分,服务器部分位于其中,但是我无法设置随后将使用 Nginx 负载均衡器功能的变量。我无法在上游设置变量,因为它不受支持(这将强制 DNS 缓存刷新,如下所述:http://forum.nginx.org/read.php?2,215830,215832#msg-215832)。
所以我的问题是如何解决这个问题?如何维护upstream
提供负载平衡的功能,同时确保在不重新启动 Nginx 社区版中的服务的情况下刷新 DNS 缓存?