Nginx PHP Http请求超时的问题

使用PHP搭建的网站有时会遇到Nginx报超时的问题,这是因为PHP的执行时间过长,Nginx在默认的等待时间内没有收到执行结果而报错。

要避免这个问题,需要同时对Nginx和PHP的配置做修改。

PHP的配置

  1. 修改php.ini中的max_execution_timemax_input_time参数,设置为较长的时间,比如300;

  2. 修改FPM配置文件下的www.conf中的request_terminate_timeout参数,与上面的时间保持一致;

改完之后重启php-fpm服务。

Nginx的配置

  1. 修改 nginx.conf中的keepalive_timeout参数,与上面的时间保持一致;

  2. 修改站点配置中的php模块,加入几个参数:fastcgi_connect_timeout,fastcgi_read_timeout,fastcgi_send_timeout,示例如下

# 适用于FastAdmin类的ThinkPHP5框架
    location ~ [^/]\.php(/|$) {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        include        fastcgi_params;
        set $real_script_name $fastcgi_script_name;
        if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
                set $real_script_name $1;
                set $path_info $2;
        }
        fastcgi_param SCRIPT_FILENAME  /var/www/html/mysite/public/$fastcgi_script_name;
        fastcgi_param SCRIPT_NAME $real_script_name;
        fastcgi_connect_timeout 300;
        fastcgi_read_timeout 300;
        fastcgi_send_timeout 300;
        fastcgi_param PATH_INFO $path_info;
    }

改完之后重启nginx服务。

Leave a Comment

豫ICP备19001387号-1