Nginx FAST-CGI缓存优化

Posted by LB on Sun, Jun 24, 2018

背景描述

传统的LNMP架构中,PHP-FPM对于PHP脚本进行解析工作,Nginx反向代理的时候,会把PHP请求转达给PHP-FPM。对于一个PHP站点,PHP-FPM的工作压力很巨大,所以,如果我们在Nginx层面上做一个FAST-CGI缓存,则会大大缓解解析器的压力,达到更好的响应效果。

NGINX 缓存配置

1. HTTP层配置

 1fastcgi_cache_path /tmp/cache/fastcgi_cache levels=1:2 keys_zone=fastcgi-cache:10m inactive=2d max_size=512m;
 2
 3fastcgi_cache_key $scheme$request_method$host$request_uri;;
 4proxy_buffering on;
 5proxy_cache_valid any 10m;
 6proxy_temp_path /tmp/cache/tmp;
 7proxy_buffer_size 4k;
 8proxy_buffers 100 8k;
 9fastcgi_cache_lock on;
10fastcgi_cache_use_stale error timeout invalid_header updating http_500;
11fastcgi_ignore_headers Cache-Control Expires Set-Cookie;

这里的key_zone = fastcgi-cache, 就是在server层需要用到的代理zone

2. Server层配置

 1location ~ [^/]\.php(/|$)
 2{
 3  try_files $uri =404;
 4  fastcgi_pass  unix:/tmp/php-cgi.sock;
 5  fastcgi_index index.php;
 6  include fastcgi.conf;
 7  add_header PHP-Cache $upstream_cache_status;  //添加响应头部
 8  fastcgi_cache fastcgi-cache;  //设置缓存zone
 9  fastcgi_cache_valid 200 60m; 
10}

测试总结

经过测试,对于实时性要求不是很高的系统,启用了缓存机制后,能够大大提高系统的访问速度,下图是本博客的全国测试结果。

测试报告