必须同时调优worker进程并启用fastcgi缓存:worker进程数设为cpu核心数(如worker_processes 4或auto),并重启nginx;在http块定义fastcgi_cache_path与缓存规则,在server的php location中启用fastcgi_cache及排除逻辑,通过x-fastcgi-cache响应头和缓存目录验证生效。

要让Nginx+PHP网站在高并发下不卡顿、响应快,必须同时调优Worker进程并启用FastCGI缓存——前者决定并发吞吐上限,后者直接跳过PHP执行链路,两者缺一不可。
设置合适的Worker进程数
Worker进程是Nginx处理请求的最小并发单元,数量过少会排队积压,过多则引发CPU上下文切换开销。
第一步:确认服务器CPU核心数,执行grep -c processor /proc/cpuinfo,假设返回值为4。
第二步:打开/etc/nginx/nginx.conf,在events块上方找到worker_processes指令。
第三步:将其设为worker_processes 4;或更稳妥地写成worker_processes auto;,让Nginx自动匹配逻辑核数。
【必须重启Nginx才能生效】仅重载配置(nginx -s reload)不会改变已运行的worker进程数量,必须执行systemctl restart nginx。
启用FastCGI缓存加速PHP响应
缓存生效的前提是Nginx编译时启用了--with-http_fastcgi_module,宝塔面板默认安装的Nginx 1.22+已内置支持。
方法一:全局定义缓存区(在http{}块内)
在http{}开头附近添加以下内容:
fastcgi_cache_path /var/cache/nginx/fastcgi levels=1:2 keys_zone=phpcache:256m inactive=60m max_size=2g use_temp_path=off;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache_valid 200 301 302 10m;
fastcgi_cache_valid 404 1m;
注意:use_temp_path=off强制缓存写入fastcgi_cache_path指定路径,避免因临时目录权限问题导致缓存静默失效。
方法二:在站点配置中启用缓存(在server{}块内的location ~ \.php${}中)
定位到location ~ \.php${}区块,在fastcgi_pass之后插入:
fastcgi_cache phpcache;
fastcgi_cache_bypass $cookie_nocache $arg_nocache;
fastcgi_no_cache $cookie_nocache $arg_nocache;
add_header X-FastCGI-Cache $upstream_cache_status;
这三行确保带nocache参数或cookie的请求不读不写缓存,避免用户登录态内容被错误缓存。
验证缓存是否真正生效
第一步:重启Nginx使配置生效,执行systemctl restart nginx。
第二步:访问一个PHP页面(如/index.php),用浏览器开发者工具查看响应头。
第三步:确认存在X-FastCGI-Cache: HIT或MISS字段——首次访问为MISS,刷新后变为HIT即表示缓存已工作。
第四步:检查缓存目录是否生成文件,执行ls -l /var/cache/nginx/fastcgi/,应看到多级子目录及缓存文件。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











