Назад | Перейти на главную страницу

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 я не могу запустить скрипты php, если я не определил для него блок местоположения с параметрами fastcgi.

Что я хотел бы сделать, так это иметь возможность включить PHP для всех размещенных сайтов на этом сервере (без необходимости добавлять блок местоположения PHP с параметрами fastcgi) для удобства обслуживания. Это сделано для того, чтобы, если мне нужно изменить какие-либо значения fastcgi для PHP, я могу просто изменить его в одном месте.

Возможно ли это для nginx? Если да, то как это можно сделать?

Обычно я создаю «глобальную» папку в папке conf.d внутри папки конфигурации Nginx. А затем создайте файл 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