使用fastcgi_buffering可以提升Nginx作为反向代理服务器的性能和用户体验。通过将FastCGI应用程序的响应缓冲起来,可以减轻后端的压力,并提高网页的加载速度。如果你正在使用Nginx作为反向代理服务器,不妨尝试使用fastcgi_buffering进行缓冲控制。
nginx配置里的fastcgi_index的作用是什么
关于fastcgi_index是这么说的如果请求的FastCGI URI以/结束,该指令设置的文件会被附加到URI的后面并保存在变量$fastcgi_script_name中而index是:该指令用于设置nginx的默认首页文件而我们的配置经常是 location ~* \$ { fastcgi_pass cos_ups; fastcgi_; ; } 在这里指定fastcgi_index其实是没有用的,因为前面的location ~* \$已经把“/结束”这种情况排除了
怎样优化FastCGI与Nginx的搭配
1、查看当前的PHP FastCGI进程数是否够用:Netstat -anpo | grep “php-cgi” | wc -l如果实际使用的“FastCGI进程数”接近预设的“FastCGI进程数”,那么,说明“FastCGI进程数”不够用,需要增大。
2、部分PHP程序的执行时间超过了Nginx的等待时间,可以适当增加配置文件中FastCGI的timeout时间……http{……fastcgi_connect_timeout 300;fastcgi_send_timeout 300;fastcgi_read_timeout 300;……}……增加fastcgi_connect_timeout 等三个参数值的方法效果也不好经过长时间反复测试,发现静态页面不会出现该错误,只有在运行动态页面或者长时间操作数据库时才会出现这个错误,重启Nginx+FastCGI后即可解决,但是几分钟到几个小时后又会出现该错误。
经过测试,发现修改文件中 request_terminate_timeout即FastCGI脚本运行时间可以有效改善该问题,增加CGI进程数也可以改善该问题,但占资源太多效率太低。
还可以修改0s5s等值对FastCGI进行优化,所以出现502的错误其实不是nginx的问题php-cgi进程数不够用、php执行时间长、或者是php-cgi进程死掉,都会出现502错误上面是转载的,试了里面的 修改文件中 request_terminate_timeou 为3s,试试效果。
我的VPS是256M的内存,CPU是四核心的,所以更多的我会在乎内存。
而在我调试服务器的时候通常会遇到Nginx502 bad gateway和504 Gateway Time-out的错误。
分析我发现Server和fastcgi的buffers过多,导致fastcgi请求的数量过大,php-fpm无法及时处理而出错。
循此思路我们可以再总体buffers不变的情况下减少请求数量,具体的改动细节如下:server_names_hash_bucket_size 128;client_header_buffer_size 32k;large_client_header_buffers 1 128k;# 4 32kclient_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 128fastcgi_busy_buffers_size 256k;fastcgi_temp_file_write_size 256k;fastcgi_intercept_Errors on;gzip on;gzip_min_length1k;gzip_buffers 1 64k; #4 16gzip_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模式。
apache-like从更改完毕到现在的测试表明上述方式的效果还是很明显的,并没有发现一次Nginx502 bad gateway或504 Gateway Time-out错误。
当然,如果你的VPS或者服务器的性能足够好可以根据具体情况不必做无谓的改动。
nginx连接fastcgi有几种模式
nginx连接fastcgi有两种模式:1. 用ip进行连接,例如fastcgi_pass127.0.0.1:9000;2. 用socket进行连接,例如fastcgi_passunix:/tmp/;
发表评论