插件窝 干货文章 nginx怎么配置php

nginx怎么配置php

PHP fastcgi Nginx 配置 467    来源:    2025-04-07

Nginx 配置 PHP 的完整指南

要在 Nginx 上运行 PHP,你需要配置 Nginx 与 PHP 处理器(通常是 PHP-FPM)协同工作。以下是详细的配置步骤:

1. 安装必要组件

首先确保已安装 Nginx 和 PHP-FPM:

# Ubuntu/Debian
sudo apt update
sudo apt install nginx php-fpm php-mysql

# CentOS/RHEL
sudo yum install epel-release
sudo yum install nginx php-fpm php-mysql

2. 基本 Nginx PHP 配置

编辑 Nginx 配置文件(通常在 /etc/nginx/sites-available/your_site/etc/nginx/conf.d/default.conf):

server {
    listen 80;
    server_name your_domain.com;
    root /var/www/html;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock; # 根据你的PHP版本调整
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }
}

3. 检查 PHP-FPM 配置

确保 PHP-FPM 监听正确的套接字或端口。检查 /etc/php/7.4/fpm/pool.d/www.conf(路径中的版本号可能不同):

listen = /run/php/php7.4-fpm.sock
; 或者
; listen = 127.0.0.1:9000

4. 测试配置并重启服务

# 测试Nginx配置
sudo nginx -t

# 重启服务
sudo systemctl restart nginx
sudo systemctl restart php7.4-fpm  # 根据你的PHP版本调整

5. 创建测试文件

在网站根目录(如 /var/www/html)创建 info.php

<?php phpinfo(); ?>

然后访问 http://your_domain.com/info.php 查看PHP信息。

高级配置选项

处理 PATH_INFO

location ~ ^(.+\.php)(/.+)$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/run/php/php7.4-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
}

提高安全性

location ~ \.php$ {
    # 其他配置...
    fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
    fastcgi_param DOCUMENT_ROOT $realpath_root;
    try_files $uri =404;
}

多PHP版本支持

如果你安装了多个PHP版本,可以为不同站点指定不同版本:

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php8.0-fpm.sock; # 使用PHP 8.0
}

常见问题解决

  1. 502 Bad Gateway 错误

    • 检查 PHP-FPM 是否运行:systemctl status php-fpm
    • 确认 fastcgi_pass 路径与 PHP-FPM 配置一致
  2. 404 错误

    • 确保 root 路径正确
    • 确认 PHP 文件有可读权限
  3. 空白页面

    • 检查 PHP 错误日志:/var/log/php7.4-fpm.log
    • 确保 PHP 代码没有语法错误

通过以上配置,你应该能够在 Nginx 上成功运行 PHP 应用程序。