配置Nginx支持PHP解析
备份Nginx配置文件
sudo cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.bak
确定php-fpm的服务地址
- 如果是快捷安装:获取PHP服务的通信地址。Nginx通过该通信地址将PHP请求转发至PHP-FPM进行处理。
PHP_FPM_LISTEN=$(sudo sed -n 's/^\s*listen\s*=\s*//p' /etc/php-fpm.d/www.conf | head -n 1) echo "$PHP_FPM_LISTEN" - 如果是源码编译安装:http:://127.0.0.0:9000
nginx转发php-fpm的说明
配置Nginx转发规则,将.php请求正确转发至PHP服务。
根据上一步的输出结果,将下方命令中的
替换为实际的通信地址后执行: 若输出为文件路径(如 /run/php-fpm/www.sock):使用的通信方式为Unix Socket(仅限本地通信,性能更好且更安全),PHP通信地址格式为unix:文件路径,例如 unix:/run/php-fpm/www.sock。
若输出为 IP:端口(如 127.0.0.1:9000):通信方式为TCP(支持跨主机通信,适用于PHP-FPM与Nginx分离部署的场景),可以直接作为PHP通信地址。
开始配置转发内容
sudo tee /etc/nginx/conf.d/default.conf <<-'EOF'
server {
listen 80;
server_name localhost;
root /usr/share/nginx/html;
# 设置默认首页文件
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
# 将.php请求转发给PHP-FPM
location ~ \.php$ {
fastcgi_pass <PHP通信地址>;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
EOF
# !wq 保存退出
检查配置文件。
sudo nginx -t
如果返回结果中包含关键字 successful,表示配置正确,可执行下一步。
如果返回结果中包含 failed,表示配置错误。请检查命令中的路径是否替换正确,或执行以下命令从备份中恢复配置文件:
sudo mv /etc/nginx/conf.d/default.conf.bak /etc/nginx/conf.d/default.conf
重启Nginx使配置生效。
sudo systemctl restart nginx
验证Nginx解析。
创建测试文件:生成一个包含phpinfo() 函数的文件,用于输出当前PHP环境的详细配置。
echo "<?php phpinfo(); ?>" | sudo tee /usr/share/nginx/html/phpinfo.php
- 浏览器验证:访问 http://
/phpinfo.php
- 成功标志:页面正常渲染并展示PHP环境配置信息。
- 失败标志:显示 "File not found" 或直接下载了文件。 清理测试文件:验证成功后,必须删除该文件。phpinfo页面包含敏感信息,暴露于公网会带来安全风险。