Nginx fastcgi_read_timeout 在特定位置

Gez*_*uri 2 nginx nginx-location

我想增加 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;
}
Run Code Online (Sandbox Code Playgroud)

}

但是,如果我添加 return 403; 代替 fastcgi_read_timeout 10s;它正确返回 403。我做错了什么?

M. *_*rdy 5

它不起作用,因为该fastcgi_read_timeout指令必须与location该级别相同fastcgi_pass或处于该server级别。

因此,您应该为整个server块设置它,或者将fastcgi_pass指令添加到location具有特定超时的情况。

在你的情况下,这看起来像:

# increase timeout for charity uploads
location = /charities/charities/import/ {
    include fastcgi.conf;
    fastcgi_read_timeout 10s;
    fastcgi_pass worker:9000;
}
Run Code Online (Sandbox Code Playgroud)

当然,这取决于您的 PHP 脚本的工作方式,也许您需要硬设置 PHP-FPM SCRIPT_FILENAME(使用fastcgi_param)。