Nginx - 为所有主机启用 PHP

Nginx - 为所有主机启用 PHP

我目前正在测试 nginx,并通过将每个虚拟主机的配置放在名为 的文件夹中的自己的文件中来设置一些虚拟主机sites-enabled

然后我要求 nginx 使用以下命令加载所有这些配置文件:

include       C:/nginx/sites-enabled/*.conf;

这是我当前的配置:

http {
    server_names_hash_bucket_size  64;

    include       mime.types;
    include       C:/nginx/sites-enabled/*.conf;
    default_type  application/octet-stream;


    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        root         C:/www-root;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            index  index.html index.htm index.php;
        }

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }    

    }

    server{
        server_name  localhost;
    }
}

这是虚拟主机的配置之一:

server {
        server_name testsubdomain.testdomain.com

        root C:/www-root/testsubdomain.testdomain.com;
}

问题是,对于 testsubdomain.testdomain.com,除非我为其定义了带有 fastcgi 参数的位置块,否则我无法运行 php 脚本。

我希望能够为该服务器上的所有托管网站启用 PHP(无需添加带有 fastcgi 参数的 PHP 位置块)以实现可维护性。这样,如果我需要更改 PHP 的任何 fastcgi 值,我只需在一个位置进行更改即可。

这对于 nginx 来说可能吗?如果可以,该怎么做?

答案1

我通常在 Nginx 配置文件夹内的 conf.d 文件夹中创建一个“全局”文件夹。然后创建一个 php.conf 文件:

location ~ \.php$ {
   fastcgi_pass   127.0.0.1:9000;
   fastcgi_index  index.php;
   fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
   include        fastcgi_params;
}

然后我只需将所有配置文件包含在虚拟主机中:

include C:/nginx/conf.d/global/*.conf

相关内容