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