增加单行路的fastcgi_read_timeout

时间:2016-01-08 16:55:18

标签: php nginx

我有以下Nginx配置,用于将请求转发到PHP-FPM后端:

server {
    ...

    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~* \.php$ {
        fastcgi_split_path_info ^(.+?\.php)(/.*)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root/index.php;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
    }

}

应用中的一条特定路线需要稍长的php max_execution_time设置。我已成功配置此功能,并通过在上面的配置中设置更长的fastcgi_read_timeout验证其有效。

但是,我不需要将其应用于每一条路线。我猜我需要一个嵌套的位置,但我尝试过的任何东西似乎都无法工作!

1 个答案:

答案 0 :(得分:2)

fastcgi_read_timeout指令似乎不接受动态值,因此需要为特殊路径设置单独的位置块。查看配置文件,我假设特殊路由是由/index.php脚本处理的唯一URI。这样的事情应该有效:

location ^~ /special/route/uri {
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root/index.php;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_read_timeout 100s;
}

您可以使用带有^~修饰符的前缀位置(如上所述)来覆盖通常处理PHP文件的正则表达式位置。或者,您可以使用正则表达式位置,但将放在上面的现有正则表达式位置,以便它优先。

有关位置语法,请参阅this document

相关问题