NGINX 每周发生一次故障,响应 499,直到 NIGNX 重新加载

NGINX 每周发生一次故障,响应 499,直到 NIGNX 重新加载

我有一个 NGINX 实例设置为多个应用程序的反向代理,每个应用程序都在 NGINX 配置中设置为自己的服务器。

目前的配置非常简单:

listen                  80;
listen                  443 ssl;
server_name             example.com;
access_log              /var/log/nginx/access.log  main;
proxy_set_header        Host $http_host;

location ~ .*/url1/.* {
                allow xx.0.0.0/8; 
                deny all;

                proxy_pass              http://aws-balender-cname-url;
}


location ~ / {
                proxy_pass              http://aws-balencer-cname-url;
}

其中一个应用程序大约在一周的同一时间停止工作一次,当我检查 NGINX 访问日志时,它的响应主要为 499(客户端关闭请求),偶尔会出现 502 和 504。所有其他应用程序都正常。

NGINX 错误日志有以下条目:

连接到时上游超时(110:连接超时)

如果我查看托管应用程序的上游服务器(Microsoft IIS,通过 AWS ELB),它看起来很好,它没有负载,请求只是停止通过。

我解决这个问题的方法是重新加载 NGINX 配置,问题不再发生,但这是一个糟糕的解决办法。

对于问题所在,您有什么建议吗?或者如何诊断?

NGINX AWS-ELB IIS 链中是否存在可能导致问题的东西?

答案1

由于这仍然是一个悬而未决的问题,而且我已经找到了原因,所以就在这里。

您的配置中proxy_pass设置为 DNS 名称而不是 IP 地址。

启动时nginx,它会解析 DNS 名称并在内部缓存其 IP 地址,并一直使用它直到下次重启。

解决方案是使用resolver具有有效参数的指令。

参考用于设置 nginx 反向代理的解析器指令

相关内容