nginx上游超时(110:连接超时),同时读取服务器重启所固定的上游响应头

时间:2017-10-02 18:09:47

标签: amazon-web-services nginx

我们正在运行nginx作为前端代理服务器,回到我们的api服务器。

Nginx将流量代理到Amazon应用程序负载均衡器(ALB),该应用程序负载均衡器附加了三个以上的服务器。以下是我们的nginx.conf的适用部分:

sendfile            on;
tcp_nopush          on;
tcp_nodelay         on;
client_header_timeout 30;
client_body_timeout 30;
client_max_body_size 350M;
gzip on;
gzip_vary on;
gzip_comp_level 2;
gzip_buffers 4 8k;
gzip_min_length 1024;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain application/javascript application/x-javascript text/xml text/css application/json;
gzip_disable "MSIE [1-6]\.";
client_body_buffer_size  500k;
client_header_buffer_size 64k;
large_client_header_buffers 4 64k;
types_hash_max_size 2048;
keepalive_timeout 30;
keepalive_requests 1024;
proxy_connect_timeout 300;
proxy_read_timeout    300;
proxy_send_timeout    300;


server {
    listen       8888 default_server;
    server_name  _;
    root         /usr/share/nginx/html;
    include /etc/nginx/default.d/*.conf;
    index   index.html;

    location /api/ {
                    proxy_pass         http://internal-ALB:8080/api/;
        proxy_redirect     off;
        proxy_set_header   Host $host;
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Host $server_name;
        proxy_set_header   Access-Control-Allow-Origin $http_origin;
    }

}

我们会定期让服务器速度减慢,最终网站会崩溃。我们将在日志中看到以下错误:

upstream timed out (110: Connection timed out) while reading response header from upstream

然而,当我们查看他们正在运行的所有上游组件时。 ALB正在运作,所有目标都是健康的。各个服务器都很健康。似乎发生了一些事情"导致它破裂,但无论那个事件是什么都解决了。但是,在解析后,代理连接未重置,仍会导致超时。

我们可以通过重新启动nginx来解决问题。但是,我们希望nginx在不重新启动服务器的情况下重置它自己的代理连接。

根据我们的设置,我们在复制此问题时遇到了一个非常困难的问题,因为它可能与AWS相关。但是,我们希望我们的系统具有容错能力并在不重新启动服务器的情况下解决此问题。

感谢。 迈尔斯。

0 个答案:

没有答案