当前位置:  开发笔记 > 编程语言 > 正文

如何在Nginx上使用FastCGI阻止网关超时

如何解决《如何在Nginx上使用FastCGI阻止网关超时》经验,为你挑选了2个好方法。

我正在运行Django,FastCGI和Nginx.我正在创建一种各种各样的api,有人可以通过XML发送一些我将处理的数据,然后为每个发送过的节点返回一些状态代码.

问题是如果我花费太长时间来处理XML,Nginx会抛出504网关超时 - 我认为超过60秒.

所以我想设置Nginx,以便任何匹配location/api的请求不会超时120秒.什么设置将实现这一目标.

到目前为止我所拥有的是:

    # Handles all api calls
    location ^~ /api/ {
        proxy_read_timeout 120;
        proxy_connect_timeout 120;
        fastcgi_pass 127.0.0.1:8080;
    }

编辑:我有什么不工作:)



1> zgoda..:

对于代理而言,代理超时很好,而不是FastCGI ...

影响FastCGI超时的指令是client_header_timeout,client_body_timeoutsend_timeout.

编辑:考虑到在nginx wiki上发现了什么,send_timeout指令负责设置响应的一般超时(这有点误导).对于FastCGI fastcgi_read_timeout,会影响fastcgi进程响应超时.

HTH.


答案是fastcgi_read_timeout - 谢谢!
对于任何使用uwsgi且出现此错误的人,uwsgi_read_timeout 600; 解决了我的问题.
我的问题是(作为服务器管理员业余爱好者)我要去哪里更改?httpd.conf文件?
如果它有帮助,我的是在Media Temple的DV系统的/ etc/nginx /.

2> Abdo..:

对于那些使用nginx与unicorn和rails的人来说,很可能超时在你的unicorn.rb文件中

在unicorn.rb中放了一个大的超时

timeout 500

如果您仍然遇到问题,请尝试在nginx的上游使用fail_timeout = 0,看看这是否可以解决您的问题.这是出于调试目的,在生产环境中可能很危险.

upstream foo_server {
        server 127.0.0.1:3000 fail_timeout=0;
}


我认为人们对它进行了低估,因为这是关于Django的,但是你的答案修复了Rails + Unicorn的网关超时问题:)
推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有