请教如何配置nginx的fastcgi-cache
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请教如何配置nginx的fastcgi-cache相关的知识,希望对你有一定的参考价值。
1、查看当前的php FastCGI进程数是否够用:netstat -anpo | grep “php-cgi” | wc -l
如果实际使用的“FastCGI进程数”接近预设的“FastCGI进程数”,那么,说明“FastCGI进程数”不够用,需要增大。
2、部分PHP程序的执行时间超过了nginx的等待时间,可以适当增加nginx.conf配置文件中FastCGI的timeout时间
……
http
……
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
……
……
增加fastcgi_connect_timeout 等三个参数值的方法效果也不好
经过长时间反复测试,发现静态页面不会出现该错误,只有在运行动态页面或者长时间操作数据库时才会出现这个错误,重启Nginx+FastCGI后即可解决,但是几分钟到几个小时后又会出现该错误。
经过测试,发现修改php-fpm.conf文件中 request_terminate_timeout即FastCGI脚本运行时间可以有效改善该问题,增加CGI进程数也可以改善该问题,但占资源太多效率太低。
还可以修改
<value name=\\“request_terminate_timeout\\”>0s</value>
<value name=\\“process_control_timeout\\”>5s</value>
等值对FastCGI进行优化,所以出现502的错误其实不是nginx的问题
php-cgi进程数不够用、php执行时间长、或者是php-cgi进程死掉,都会出现502错误
上面是转载的,试了里面的 修改php-fpm.conf文件中 request_terminate_timeou 为3s,试试效果。
我的VPS是256M的内存,CPU是四核心的,所以更多的我会在乎内存。而在我调试服务器的时候通常会遇到Nginx502 bad gateway和504 Gateway Time-out的错误。分析nginx.conf我发现server和fastcgi的buffers过多,导致fastcgi请求的数量过大,php-fpm无法及时处理而出错。循此思路我们可以再总体buffers不变的情况下减少请求数量,具体的ningx.conf改动细节如下:
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 1 128k;# 4 32k
client_max_body_size 8m;
sendfile on;
tcp_nopush on;
keepalive_timeout 60;
tcp_nodelay on;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 128k;
fastcgi_buffers 2 256k;#8 128
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;
gzip on;
gzip_min_length 1k;
gzip_buffers 1 64k; #4 16
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;
另外,php-fpm的默认静态处理方式会使得php-cgi的进程长期占用内存而无法释放,这也是导致nginx出错的原因之一,因此可以将php-fpm的处理方式改成apache模式。
<value name=“style”>apache-like</value>
从更改完毕到现在的测试表明上述方式的效果还是很明显的,并没有发现一次Nginx502 bad gateway或504 Gateway Time-out错误。当然,如果你的VPS或者服务器的性能足够好可以根据具体情况不必做无谓的改动。 参考技术A nginx是启动引入,因为nginx特别注重效率,所以启动的时候会把所有的配置文件读入内存,然后启动个。
如果发现有语法错误,则启动失败。而apache则是动态引入,每次访问站点都会重新载入配置。本回答被提问者采纳
请教关于nginx配置404错误页面
一个网站,肯定是避免不了404页面的,通常使用Nginx作为Web服务器时,有以下集中配置方式,大家和云雀运维一起来看看吧。方法/步骤
第一种:Nginx自己的错误页面
Nginx访问一个静态的html 页面,当这个页面没有的时候,Nginx抛出404,那么如何返回给客户端404呢?
看下面的配置,这种情况下不需要修改任何参数,就能实现这个功能。
server
listen 80;
server_name www.test.com;
root /var/www/test;
index index.html index.htm;
location /
# 定义错误页面码,如果出现相应的错误页面码,转发到那里。
error_page 404 403 500 502 503 504 /404.html;
# 承接上面的location。
location = /404.html
# 放错误页面的目录路径。
root /usr/share/nginx/html;
第二种:反向代理的错误页面
如果后台Tomcat处理报错抛出404,想把这个状态叫Nginx反馈给客户端或者重定向到某个连接,配置如下:
upstream www
server 192.168.1.201:7777 weight=20 max_fails=2 fail_timeout=30s;
ip_hash;
server
listen 80;
server_name www.test.com;
root /var/www/test;
index index.html index.htm;
location /
if ($request_uri ~* '^/$')
rewrite .* http://www.test.com/index.html redirect;
# 关键参数:这个变量开启后,我们才能自定义错误页面,当后端返回404,nginx拦截错误定义错误页面
proxy_intercept_errors on;
proxy_pass http://www;
proxy_set_header HOST $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-FOR $proxy_add_x_forwarded_for; 参考技术A 建议使用护卫神.nginx大师,一键安装nginx+php+mysql_+ftp,在线配置nginx,包括404页面的设置。本回答被提问者采纳
以上是关于请教如何配置nginx的fastcgi-cache的主要内容,如果未能解决你的问题,请参考以下文章
请教ThinkPHP 3.1 Nginx配置问题 functions.php 112无法加载模块