要在 Nginx 上运行 PHP,你需要配置 Nginx 与 PHP 处理器(通常是 PHP-FPM)协同工作。以下是详细的配置步骤:
首先确保已安装 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
编辑 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;
}
}
确保 PHP-FPM 监听正确的套接字或端口。检查 /etc/php/7.4/fpm/pool.d/www.conf
(路径中的版本号可能不同):
listen = /run/php/php7.4-fpm.sock
; 或者
; listen = 127.0.0.1:9000
# 测试Nginx配置
sudo nginx -t
# 重启服务
sudo systemctl restart nginx
sudo systemctl restart php7.4-fpm # 根据你的PHP版本调整
在网站根目录(如 /var/www/html
)创建 info.php
:
<?php phpinfo(); ?>
然后访问 http://your_domain.com/info.php
查看PHP信息。
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版本,可以为不同站点指定不同版本:
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.0-fpm.sock; # 使用PHP 8.0
}
502 Bad Gateway 错误:
systemctl status php-fpm
fastcgi_pass
路径与 PHP-FPM 配置一致404 错误:
root
路径正确空白页面:
/var/log/php7.4-fpm.log
通过以上配置,你应该能够在 Nginx 上成功运行 PHP 应用程序。