使用PHP搭建的网站有时会遇到Nginx报超时的问题,这是因为PHP的执行时间过长,Nginx在默认的等待时间内没有收到执行结果而报错。
要避免这个问题,需要同时对Nginx和PHP的配置做修改。
PHP的配置
-
修改
php.ini
中的max_execution_time
和max_input_time
参数,设置为较长的时间,比如300; -
修改FPM配置文件下的
www.conf
中的request_terminate_timeout
参数,与上面的时间保持一致;
改完之后重启php-fpm服务。
Nginx的配置
-
修改
nginx.conf
中的keepalive_timeout
参数,与上面的时间保持一致; -
修改站点配置中的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服务。