【问题标题】:Nginx fastcgi_read_timeout at specific locationNginx fastcgi_read_timeout 在特定位置
【发布时间】:2018-04-11 19:45:57
【问题描述】:

我想在位置级别为 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;
}

}

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

【问题讨论】:

    标签: nginx nginx-location


    【解决方案1】:

    它不起作用,因为fastcgi_read_timeout 指令必须与fastcgi_pass 位于同一locationserver 级别。

    因此,您应该为整个 server 块设置它,或者将 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)。

    【讨论】:

    • 我可能不完全理解你的意思。我添加了 fastcgi_pass unix:/run/php/php7.0-fpm.sock;到相同的位置,问题仍然存在。你会以一种可行的方式修改我发布的配置吗?谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-25
    • 2018-12-02
    • 2023-03-03
    • 2019-05-31
    • 2021-05-16
    相关资源
    最近更新 更多