如何在通过特定端口或仅通过指定文件夹访问时禁用 nginx 超时。无论哪种方式都比较简单。
基本上,我有一些需要长时间执行的脚本,但网关超时阻止了它们完成。
答案1
这里涉及两个指令,一个是 nginx 中fastcgi_read_timeout
描述的这里,另一个是在 php-fpm.conf reqest_terminate_timeout
,您可以将其设置为 0 以禁用超时。
在 nginx 中将fastcgi_read_timeout
其设置为任意大值,正如我在第一个链接中回答的那样,您可以在任何特定的内部设置它location
。
答案2
通常,如果您的脚本需要更多时间,那么有几种解决方案。
您可以增加
fastcgi_read_timeout
和reqest_terminate_timeout
。但问题是您不应该将值设置得太高。如果您有很多进程相互阻塞,它们会长时间打开,您的服务器可能无法再提供您的内容。我更倾向于不要在 Web 服务器上执行长时间运行的脚本。例如,使用命令行并使用 cron 运行脚本。通常,Web 服务器不是执行长时间运行脚本的好方法。
几个月前我也遇到过同样的问题,我们改用了 php-cgi,并且有一个通过 wget 运行的脚本。我使用 CLI 更改了正在运行的脚本。