Nginx问题收集

技术库 小李 711浏览

1,Nginx服务器端解决font字体文件跨域

location ~* \.(eot|ttf|woff|svg|otf)$ {
     add_header Access-Control-Allow-Origin *;
}

2,重写配置

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

3,wordpress出现413 Request Entity Too Large、HTTP错误、大图片上传失败

Nginx服务器

原因是请求实体太长了。一般出现种情况是Post请求时Body内容Post的数据太大了

如上传大文件过大; 如POST数据比较多

处理方法修改nginx.conf的值就可以解决了。

http {
      client_max_body_size 20M;
}

其它服务器参考:https://my.oschina.net/junn/blog/147603

4,php-fpm nginx 超时参数设置

php-fpm:

request_terminate_timeout = 30
php.ini:
max_execution_time = 30

request_terminate_timeout 适用于,当max_execution_time由于某种原因无法终止脚本的时候,会把这个php-fpm请求干掉。

web请求php执行时间受到2方面控制,一个是php.ini的max_execution_time(要注意的是sleep,http请求等待响应的时间是不算的,这里算的是真正的执行时间),另一个是php-fpm request_terminate_timeout 设置,这个算的是请求开始n秒。
当超过这个时间时,PHP-FPM不只会终止脚本的执行,
还会终止执行脚本的Worker进程。所以Nginx会发现与自己通信的连接断掉了,就会返回给客户端502错误。

nginx的关键参数是 fastcgi 相关的 timeout,即:fastcgi_connect_timeout,fastcgi_read_timeout,fastcgi_send_timeout。

这几个 nginx 参数的主语都是 nginx,所以 fastcgi_connect_timeout 的意思是 nginx 连接到 fastcgi 的超时时间,fastcgi_read_timeout 是 nginx 读取 fastcgi 的内容的超时时间,fastcgi_send_timeout 是 nginx 发送内容到 fastcgi 的超时时间。

Nginx 504 Gateway Time-out的含义是没有请求到可以执行的PHP-CGI。

Nginx 502 Bad Gateway的含义是请求的PHP-CGI已经执行,但是由于读取资源的等没有执行完毕而导致PHP-CGI进程终止。

nginx.conf —  http节:

keepalive_timeout 600; #客户端浏览器超时时间
fastcgi_connect_timeout 600; #php-fpm连接超时时间(等待php执行的最长时间,超过这个会向浏览器返回504或502)
fastcgi_send_timeout 600; #
fastcgi_read_timeout 600;

php-fpm.conf :

pm.max_children = 40 #最大子进程数量
request_terminate_timeout = 600 #php-fpm进程执行超时时间

php.ini :
max_execution_time = 300 #php执行超时时间
max_input_time = 300 #获取post上传数据最长时间
memory_limit = 128M #内存限制
default_socket_time

转载请注明:清韵逸-博客生活分享 » Nginx问题收集