Nginx Windows: настройка сайтов-доступных конфигураций

Я пытаюсь настроить Nginx в своей среде разработки Windows. Я не могу найти, как создать нечто похожее на "sites-enabled" в Linux, где Nginx будет искать (ссылки на) активные конфигурации виртуальных хостов.

Есть ли способ сделать что-то похожее с каталогом с ярлыками для фактических файлов конфигурации и Nginx, сканирующим этот каталог? Или есть другой способ подключения конфигурации виртуального хоста, кроме копирования конфигурации хоста в nginx.conf?

Ответ 1

Подход, основанный на сайтах, используемый некоторыми пакетами Linux nginx, использует директиву include, которая понимает подстановочные знаки оболочки, см. http://nginx.org/r/include. Вы также можете использовать его в своей собственной конфигурации, например,

http {
    ...
    include /path/to/sites/*.conf;
}

Обратите внимание, что такой подход может быть очень запутанным (в частности, было бы трудно определить, какой сервер {} является стандартным, если вы явно не используете default_server).

Ответ 2

В Windows вы должны указать полный путь к каталогу, в котором находятся файлы конфигурации. Есть два файла для обновления: nginx.conf, который сообщает nginx, где искать веб-сайты, и localhost.conf, который является конфигурацией для веб-сайта.

Предполагается, что nginx установлен в C:\nginx. Если каталог установки находится по другому пути, вам придется соответствующим образом обновить этот путь, где бы он ни появлялся в следующих двух файлах конфигурации.

nginx.conf

Расположение: C:\nginx\conf

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    #to read external configuration.
    include "C:/nginx/conf/sites-enabled/*.conf";
}

localhost.conf

Расположение: C:\nginx\conf\sites-enabled

server {
        listen       80;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
}

Ответ 3

Следующие работали для меня, но только после того, как я переместил мою основную папку exgin exgin с c:/Program Files (x86)/nginx-1.7.0 на c:/nginx-1.7.0 (потому что я думаю, что она не обрабатывает пробелы в пути файлов хорошо):

http {
    ...
    include "f:/code/mysite/dev-ops/nginx/dev/mysite.conf";
}

Ответ 4

Вы можете включить вашу конфигурацию с относительным путем в ваш файл nginx.config (относительный путь - это просто путь самого файла конфигурации в отличие от пути журналов, например):

http {
  include       mime.types;
  default_type  application/octet-stream;
  include       ../sites-enabled/*.conf;
  ...
}