问题

在安装 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;