【问题标题】:nginx 504 Gateway Time-outnginx 504 网关超时
【发布时间】:2011-08-30 07:03:30
【问题描述】:

我正在 nginx 上运行一个带有 phusion-passenger 的 rails3.0.7 项目。 当我在做一个需要大约 15 分钟来处理的 ajax 时。 在调用 ajax 10 分钟后,它会在萤火虫中跳出一个错误,提示“504 Gateway Time-out”。

谁能告诉我如何找到问题所在。

谢谢,本

环境

  • 操作系统:mac osx 10.6.7
  • ruby:1.9.2p180 与 rvm 一起安装
  • 宝石:1.6.2
  • 乘客 3.0.7
  • 导轨:3.0.7
  • mysql: 5.5.10 与 brew 一起安装
  • nginx: 1.0.0 独立安装passender

【问题讨论】:

    标签: ruby-on-rails nginx passenger http-status-code-504


    【解决方案1】:

    这是一个 nginx 超时错误。如果您确实希望允许超过 10 分钟的时间来完成任务,请查看以下文章以了解您需要调整哪个参数以避免超时。

    How do I prevent a gateway timeout with nginx

    【讨论】:

      【解决方案2】:

      这是一个 nginx 超时错误。

      【讨论】:

      • 在我看来就像 nginx 504 网关超时。
      【解决方案3】:

      这是phusion-passenger的问题。 您应该更改文件:(gems >passenger-3.0.18 > ext > nginx > Configuration.c)

      ngx_conf_merge_msec_value(conf->upstream_config.send_timeout,
                                prev->upstream_config.send_timeout, 6000000);
      
      ngx_conf_merge_msec_value(conf->upstream_config.read_timeout,
                                prev->upstream_config.read_timeout, 6000000);
      

      origin timeout 是 600000,也就是 10 分钟。 我尝试更改 nginx.conf,但没有成功。

      【讨论】:

        【解决方案4】:

        Mac OS X (Yosemite) 上的 Rails 4 也有类似的问题。所以我将以下内容添加到我的特定 Nginx 位置。

        proxy_connect_timeout 43200000;
        proxy_read_timeout    43200000;
        proxy_send_timeout    43200000;
        

        所以我对 Nginx 的整体配置如下。

        location /my_sub_path/ {
            root /my/rails/project/public/folder/path
        
            proxy_http_version 1.1;
            chunked_transfer_encoding off;
            proxy_buffering off;
            proxy_cache off;
        
            proxy_connect_timeout 43200000;
            proxy_read_timeout    43200000;
            proxy_send_timeout    43200000;
        
            proxy_redirect     off;
            proxy_set_header   Host             $http_host;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-Proto $scheme;
            proxy_pass http://127.0.0.1:3000/;
        }
        

        【讨论】:

        • 那么这里使用的时间单位是什么? proxy_connect_timeout 43200000;我猜这是以毫秒为单位,因此它会超时 12 小时?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-13
        • 2011-04-08
        • 2011-10-04
        • 2019-10-22
        • 2019-12-02
        • 2019-01-20
        相关资源
        最近更新 更多