【问题标题】:Phusion Passenger + Nginx : Set Connection Timeout parameter in nginx confPhusion Passenger + Nginx:在 nginx conf 中设置连接超时参数
【发布时间】:2019-02-16 11:07:02
【问题描述】:

如果我想增加所有请求的超时时间,应该在 Nginx 中包含什么连接超时选项?

目前,任何花费超过一分钟的请求都会在浏览器中使用504 Connection Timed Out 超时,我想增加该时间。

这是我在 Nginx 中的当前配置:

server {
    listen       443;

    ssl                  on;
    ssl_certificate      /opt/nginx/certs/ssl.pem;
    ssl_certificate_key  /opt/nginx/certs/ssl.key;
    keepalive_timeout 75;
    ssl_session_timeout  5m;

    ssl_protocols  SSLv2 SSLv3 TLSv1;
    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers   on;

    server_name  <server_url>;
    root         /home/ubuntu/rails_app/public;
    passenger_enabled on;
    error_page   500 502 503 504  /50x.html;
}

我已经尝试过包含以下选项但不起作用 -

proxy_connect_timeout
proxy_send_timeout
proxy_read_timeout
send_timeout

【问题讨论】:

  • 504 超时问题意味着我的服务器无法与网站正常通信。
  • 检查端口并重启passanger

标签: ruby-on-rails nginx timeout passenger


【解决方案1】:

呈现相同条件的一个场景是 nginx 位于 AWS 应用程序或弹性负载均衡器 (ALB) 等负载均衡器的后面。

ALB 有一个可配置的“空闲超时”,默认为 60 秒。

如果在 Idle Timeout 内没有收到响应,ALB 将关闭连接。 nginx 日志将显示 HTTP 499 错误“客户端已关闭请求”。 https://httpstatuses.com/499

ALB 将向用户的浏览器返回 504 Connection Timed Out 错误。 https://httpstatuses.com/504

ALB“空闲超时”将提供一个上限,并且必须在任何下游 nginx 或乘客超时产生任何影响之前提高。

【讨论】:

    【解决方案2】:

    尝试极端超时以查看问题是否会重现

    • client_header_timeout 600s;
    • client_body_timeout 600s;
    • keepalive_timeout 600s;
    • proxy_read_timeout 600s;
    • proxy_send_timeout 600s;
    • lingering_timeout 600s;
    • lingering_time 600s;
    • send_timeout 600s;

    然后重启nginx。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-10
      • 2021-12-14
      • 2015-01-16
      • 2011-08-17
      • 2020-02-03
      • 2013-05-06
      • 2016-01-03
      • 1970-01-01
      相关资源
      最近更新 更多