centps 7升级php和nginx到最新版后的nginx和php的配置
在 CentOS 7 上将 Nginx 升级到最新稳定版(如 1.26+),并将 PHP 升级到现代版本(如 PHP 8.2 / 8.3 / 8.4)后,为了让它们完美协同并发挥最佳性能,我们需要对 Nginx 主配置文件、站点虚拟主机配置 以及 PHP-FPM 配置 进行全面联动调整。
以下是为你整理的全套生产环境标准配置文件模板及关键参数解析:
一、 PHP-FPM 核心配置文件
最新版 Remi 源安装的 PHP-FPM 配置文件通常位于 /etc/php-fpm.d/www.conf。为了与 Nginx 顺畅通信,请使用 vi /etc/php-fpm.d/www.conf 修改或确认以下关键项:
Ini, TOML
; 1. 设置 PHP-FPM 的运行用户和组为 nginx(新版 Nginx 官方源默认用户,我的为apache)
user = nginx
group = nginx
; 2. 通信方式选择:推荐使用 Unix Socket(本地运行性能比 127.0.0.1:9000 高 10% 左右)
listen = /run/php-fpm/www.sock
; 3. 🚨 极其重要:设置 Socket 文件的权限,否则 Nginx 会报 502 Bad Gateway
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
; 4. 性能调优:根据服务器内存调整进程数(以下适合 2G~4G 内存服务器)
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500 ; 周期性释放内存,防止 PHP 内存泄露
修改后执行重启命令: systemctl restart php-fpm
二、 Nginx 站点虚拟主机配置文件
建议将你的站点配置写在 /etc/nginx/conf.d/ 目录下(例如 /etc/nginx/conf.d/default.conf)。这套配置已经过安全加固、伪静态支持以及大模型/长耗时脚本优化:
Nginx
server {
listen 80;
listen [::]:80;
server_name example.com; # 换成你的域名或服务器IP
# 现代 Web 项目推荐的网站根目录
root /usr/share/nginx/html;
index index.php index.html index.htm;
charset utf-8;
# 1. 优化:关闭无用日志记录,减少磁盘 I/O
location = /favicon.ico { log_not_found off; access_log off; }
location = /robots.txt { log_not_found off; access_log off; }
# 2. 支持现代主流框架的伪静态路由(Laravel, ThinkPHP, Vue Router 等)
location / {
try_files $uri $uri/ /index.php?$query_string;
}
# 3. 🚨 核心:联动最新版 PHP-FPM 的解析配置
location ~ \.php$ {
# 严格防范:确保文件确实存在,防止通过恶意构造的 URL 绕过安全防护
try_files $uri =404;
# 核心连接:指向刚才在 php-fpm 里配置的 Unix Socket 路径
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index (config).php;
# 引入 Nginx 官方标准的 FastCGI 参数
include fastcgi_params;
# 关键修正:设置正确的脚本路径,否则 PHP 会返回空白页(Blank Page)
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
# 安全加固:隐藏 PHP 版本号,防止被黑客针对性扫描漏洞
fastcgi_hide_header X-Powered-By;
# 性能与超时调优:针对大数据流传输、AI 长文本生成或复杂后台任务
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
# 调大超时时间(2分钟),防止高耗时脚本直接弹 504 Gateway Timeout
fastcgi_read_timeout 120s;
fastcgi_send_timeout 120s;
}
# 4. 安全加固:严禁外部直接访问敏感隐藏文件(如 .env, .git, .htaccess 等)
location ~ /\.(?!well-known).* {
deny all;
access_log off;
log_not_found off;
}
# 5. 静态资源强缓存:针对图片、JS、CSS 开启浏览器强缓存,大幅度压低服务器带宽消耗
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
log_not_found off;
access_log off;
}
# 错误页面友好重定向
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}}
三、 PHP 核心全局配置 (/etc/php.ini)
升级到 PHP 8.x 后,为了支撑更现代的开发需求(如本地大模型交互、文件上传、长耗时自动化任务),建议用 vi /etc/php.ini 调整以下全局核心参数:
Ini, TOML
; 1. 调整最大脚本执行时间,防止跑自动化脚本或 AI 工具时中途断开
max_execution_time = 120
max_input_time = 120
; 2. 调大单个脚本可使用的最大内存(根据你服务器的总内存决定,建议不低于 256M)
memory_limit = 512M
; 3. 调大文件上传限制,满足大文件或媒体资源的上传需求
upload_max_filesize = 100M
post_max_size = 108M
; 4. 生产环境安全:关闭错误回显,防止报错时暴露服务器敏感绝对路径
display_errors = Off
log_errors = On
error_log = /var/log/php-fpm/www-error.log
; 5. 时区修正
date.timezone = Asia/Shanghai
四、 检查与生效步骤
在完成上述所有配置后,请严格按照以下顺序测试并重启服务,以防配置低级语法错误导致 Web 服务器崩溃:
测试 Nginx 语法:
Bash
nginx -t
看到终端返回 nginx: configuration file /etc/nginx/nginx.conf test is successful 字样,才可以继续。
重启服务使其彻底生效:
Bash
systemctl restart php-fpm
systemctl restart nginx
环境联通性测试:
在 /usr/share/nginx/html 目录下创建一个测试文件:
Bash
echo "<?php phpinfo(); ?>" > /usr/share/nginx/html/index.php
在浏览器里输入服务器的 IP 地址。如果能完美看到崭新的 PHP Version 8.3.x 或 8.4.x 的蓝色大表格,且其中的 Server API 显示为 FPM/FastCGI,说明升级后的现代 Web 环境已经完全调校成功!