我想增加 nginx 位置级别的 fastcgi_read_timeout 。然而它不起作用。 fastcgi_read_timeout 仍然是 6 而不是 10。我的配置文件是:
server {
listen 80;
listen [::]:80;
index index.php;
root /websites/somesite.org;
server_name somesite.org;
fastcgi_read_timeout 6s;
location / {
try_files $uri /index.php$is_args$args;
}
location ~ ^/index\.php(/|$) {
include fastcgi.conf;
internal;
}
# increase timeout for charity uploads
location = /charities/charities/import/ {
fastcgi_read_timeout 10s;
try_files $uri /index.php$is_args$args;
}
# any other php extension should fail
location ~ \.php$ {
return 403;
}
}
但是如果我添加 return 403;代替 fastcgi_read_timeout 10s;它正确返回 403。我做错了什么?
最佳答案
它不起作用,因为 fastcgi_read_timeout
指令必须与 fastcgi_pass
位于同一位置
,或者位于服务器
级别。
因此,您应该为整个 server
block 设置它,或者将 fastcgi_pass
指令添加到具有特定超时的 location
。
在你的情况下,它看起来像:
# increase timeout for charity uploads
location = /charities/charities/import/ {
include fastcgi.conf;
fastcgi_read_timeout 10s;
fastcgi_pass worker:9000;
}
当然,这取决于您的 PHP 脚本的工作方式,也许您需要硬设置 PHP-FPM 的 SCRIPT_FILENAME
(使用 fastcgi_param
)。
关于Nginx fastcgi_read_timeout 在特定位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48755433/