在CentOS系统中配置Nginx以支持PHP是搭建动态网站环境的基础步骤,这一过程涉及安装必要的软件包、配置Nginx与PHP-FPM的协同工作,以及确保系统安全性和性能优化,本文将详细介绍这一配置流程,从环境准备到最终测试,帮助读者顺利完成部署。

环境准备与软件安装
确保系统已更新至最新状态,通过执行sudo yum update -y命令,可以安装所有可用的安全补丁和软件更新,安装EPEL(Extra Packages for Enterprise Linux)仓库,以获取Nginx和PHP的额外软件包,执行命令sudo yum install epel-release -y后,即可开始安装Nginx和PHP相关组件。
安装Nginx时,使用命令sudo yum install nginx -y,对于PHP,建议安装PHP-FPM(FastCGI Process Manager),这是Nginx与PHP交互的关键,根据需求选择PHP版本,例如安装PHP 7.4及常用扩展:sudo yum install php php-fpm php-mysql php-gd php-xml php-mbstring -y,安装完成后,启动并启用PHP-FPM服务:sudo systemctl start php-fpm和sudo systemctl enable php-fpm。
Nginx与PHP-FPM的协同配置
Nginx本身无法直接解析PHP文件,需要通过FastCGI将请求传递给PHP-FPM处理,编辑Nginx的主配置文件/etc/nginx/nginx.conf,确保包含server块的正确配置,在/etc/nginx/conf.d/目录下创建一个新的配置文件,例如php.conf,用于定义PHP的处理规则。
在配置文件中,添加以下内容:
server {
listen 80;
server_name your_domain.com;
root /var/www/html;
index index.php index.html;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
此配置将所有.php请求转发到本地的PHP-FPM服务(监听9000端口),并确保传递正确的脚本文件路径。

权限与安全设置
确保Nginx和PHP-FPM用户对网站目录有适当的读写权限,默认情况下,Nginx运行在nginx用户,而PHP-FPM运行在apache用户,为避免权限冲突,可以将两者统一为nginx用户,编辑/etc/php-fpm.d/www.conf文件,将user和group改为nginx,然后重启PHP-FPM服务:sudo systemctl restart php-fpm。
为网站目录设置正确的所有权:sudo chown -R nginx:nginx /var/www/html,为增强安全性,确保PHP配置文件中禁用危险函数,编辑/etc/php.ini,设置disable_functions = exec,passthru,shell_exec,system,proc_open,popen。
测试PHP功能
创建一个测试文件以验证配置是否生效,在/var/www/html/目录下创建info.php为:
<?php phpinfo(); ?>
保存后,访问http://your_server_ip/info.php,如果看到PHP信息页面,说明Nginx与PHP-FPM配置成功,测试完成后,建议删除该文件以避免信息泄露。
性能优化与日志管理
为提升性能,可以启用Nginx的缓存和压缩功能,在nginx.conf中添加以下配置:

gzip on; gzip_types text/plain text/css application/json application/javascript text/xml;
定期检查Nginx和PHP-FPM的错误日志,分别位于/var/log/nginx/error.log和/var/log/php-fpm/www-error.log,通过日志可以快速定位问题,如配置错误或性能瓶颈。
相关问答FAQs
Q1: 访问PHP文件时出现403错误,如何解决?
A1: 403错误通常是由于权限问题导致的,请检查网站目录的所有权是否为nginx用户,并确保目录和文件具有适当的执行权限,执行sudo chmod -R 755 /var/www/html和sudo chown -R nginx:nginx /var/www/html命令,然后重启Nginx服务。
Q2: 如何修改PHP-FPM的监听端口以避免冲突?
A2: 编辑/etc/php-fpm.d/www.conf文件,找到listen = 127.0.0.1:9000这一行,将其修改为其他未被占用的端口,例如listen = 127.0.0.1:9001,保存后,在Nginx的PHP配置中相应地更新fastcgi_pass指令,并重启PHP-FPM和Nginx服务。