问题
在安装 nginx 时,如果安装的方式是官方安装包编译安装的话,在默认情况下,nginx 是不支持 php 的,是需要修改配置才能支持 php;如果安装的方式是宝塔面板,则配置文件已被修改过以支持 php。
php fastcgi 配置
nginx 配置需要修改以支持 php 的地方就是:php 文件匹配路由以及对应 fastcgi 的通信方式。
由于 nginx 与 php-fpm 通信的方式有两种,tcp 套接字和 unix 套接字,对应的配置方式也有两种,取决于 php-fpm 的运行方式。(参考链接:nginx与php-fpm通信的两种方式)
- unix 套接字通信时的配置方式
location ~ \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;;
fastcgi_pass unix:/var/run/php7.4-fpm.sock;
fastcgi_index index.php;
}
在宝塔面板的安装方式下,nginx 配置文件可能会进行拆分,使用 include 包含。
// nginx/conf/nginx.conf
server
{
listen 80;
server_name phpmyadmin;
index index.html index.htm index.php;
root /www/server/nginx/html;
#error_page 404 /404.html;
include enable-php.conf; // php匹配规则被拆分到这个文件里
...
// enable-php.conf
location ~ [^/]\.php(/|$)
{
try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi-74.sock;
fastcgi_index index.php;
include fastcgi.conf;
include pathinfo.conf;
}
- tcp 套接字通信时的配置方式
location ~ \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
}
宝塔面板安装 nginx 的配置方法
无需配置 fastcgi, 默认使用的 unix 套接字配置方法,同时,使用该面板安装的 php 也是以 unix 套接字运行的,只需要修改 http 服务器的运行端口和代理文件目录即可。
server
{
listen 80; // 运行端口
server_name phpmyadmin;
index index.html index.htm index.php;
root /www/server/nginx/html; // 代理目录,推荐绝对路径
#error_page 404 /404.html;
include enable-php.conf;