如何增加NGINX的超时时间?

时间:2019-02-17 21:28:13

标签: python nginx flask wsgi

我正在使用Python,Flask,uWSGI和NGINX托管Web服务器。其中一项功能涉及为用户生成文件,该文件最多可能需要一到两分钟。在此操作中,我不断收到NGINX的504超时。我试图在/etc/nginx/nginx.conf中更改一些配置变量,例如keepalive_timeout,但这没有用。我还尝试在/etc/nginx/conf.d/timeout.conf中添加以下内容:

proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;

然后我重新加载了systemctl reload nginx,但是它没有任何改变。

如何增加请求超时之前的时间? 感谢您的帮助

3 个答案:

答案 0 :(得分:3)

在“ http”部分的末尾添加以下指令,以将超时限制增加到180秒(3分钟):

http {
    <...>
    include /etc/nginx/conf.d/.conf;

    proxy_send_timeout 180s;
    proxy_read_timeout 180s;
    fastcgi_send_timeout 180s;
    fastcgi_read_timeout 180s;
}

来源:https://support.plesk.com/hc/en-us/articles/115000170354-An-operation-or-a-script-that-takes-more-than-60-seconds-to-complete-fails-on-a-website-hosted-in-Plesk-nginx-504-Gateway-Time-out

答案 1 :(得分:0)

我遇到了同样的问题..我发现了一种解决方法,告诉nginx接受默认数据量以外的一定数量的数据。并不是要自己管理超时,而是要更改事务中接受的数据量就可以了。

 server {

        client_max_body_size            5M; # or more ^^

}

但是它实际上不是安全选项。它可以工作,但是请小心。

此外,如果您使用的是反向代理WSGI网关(例如Php)..底层机制可能会优先于此

答案 2 :(得分:-1)

server {

        server_name                     yourhost;
        client_max_body_size            5M;

        location / {
                proxy_http_version      1.1;
                proxy_set_header        Host $host;
                proxy_set_header        Upgrade $http_upgrade;
                proxy_set_header        Connection "upgrade";
                proxy_set_header        X-Real-IP       $remote_addr;
                proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;

                proxy_pass              http://127.0.0.1:8080; # depending on your network conf

        }
}