Nginx fastcgi_read_timeout 在特定位置

标签 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;
}

}

但是如果我添加 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/

相关文章:

同一服务器实例上多个静态站点的 Nginx 配置

docker - docker代理路径中的nginx到子域

kubernetes-ingress - SPA 应用程序(Vue、React、Angular)在 Kubernetes 上的 Nginx 入口 Controller 后面无法正常工作

nginx - Elastic Beanstalk 上的 WebSockets 与 Docker

php - 下载计数器功能不准确

html - Nginx 找到 css 但没有将其加载到 index.html

http - Nginx 在不提供文件的情况下返回 200

ubuntu - 定位 Vestacp 使用的备份文件夹

url-rewriting - 将子域上的已知文件夹重定向到 nginx 的主站点