配置Nginx支持PHP解析

备份Nginx配置文件

sudo cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.bak

确定php-fpm的服务地址

  1. 如果是快捷安装:获取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"
    
  2. 如果是源码编译安装: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页面包含敏感信息,暴露于公网会带来安全风险。

results matching ""

    No results matching ""