web-dev-qa-db-ja.com

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;
    }
}

そして、これは仮想ホストの構成の1つです。

server {
        server_name testsubdomain.testdomain.com

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

問題は、testsubdomain.testdomain.comの場合、fastcgiパラメーターを使用してロケーションブロックを定義しない限り、phpスクリプトを実行できないことです。

私がやりたいのは、このサーバー上のすべてのホストされたサイトに対してPHPを有効にできるようにすることです(fastcgiパラメーターを使用してPHPロケーションブロックを追加する必要はありません) )保守性のため。これは、PHPのfastcgi値を変更する必要がある場合に、1か所で変更できるようにするためです。

これはnginxで可能なことですか?もしそうなら、これはどのように行うことができますか?

7
F21

私は通常、Nginxconfigフォルダー内の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
7
Taylor Jasko