Nginx FAST-CGI缓存优化

@李彪  June 24, 2018

背景描述

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

NGINX 缓存配置

1. HTTP层配置

fastcgi_cache_path /tmp/cache/fastcgi_cache levels=1:2 keys_zone=fastcgi-cache:10m inactive=2d max_size=512m;

fastcgi_cache_key $scheme$request_method$host$request_uri;;
proxy_buffering on;
proxy_cache_valid any 10m;
proxy_temp_path /tmp/cache/tmp;
proxy_buffer_size 4k;
proxy_buffers 100 8k;
fastcgi_cache_lock on;
fastcgi_cache_use_stale error timeout invalid_header updating http_500;
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;

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

2. Server层配置

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

测试总结

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

测试报告


评论已关闭