конфигурация nginx поддомен
У меня есть nginx, действующий как обратный прокси-сервер для apache. Теперь мне нужно добавить новый поддомен это будет обслуживать файлы из другого каталога, но в то же время я хочу, чтобы все директивы location и proxy_pass, которые у меня есть для хоста по умолчанию, также применялись к поддомену.
Я знаю, что если я скопирую правила с хоста по умолчанию на новый поддомен, он будет работать, но есть ли способ для поддомена наследовать правила? Ниже приведен пример конфигурация
server {
listen 80;
server_name www.somesite.com;
access_log logs/access.log;
error_log logs/error.log error;
location /mvc {
proxy_pass http://localhost:8080/mvc;
}
location /assets {
alias /var/www/html/assets;
expires max;
}
... a lot more locations
}
server {
listen 80;
server_name subdomain.somesite.com;
location / {
root /var/www/some_dir;
index index.html index.htm;
}
}
спасибо
1 ответ:
вы можете переместить общие части в другой файл конфигурации и
include
из обоих контекстов сервера. Это должно работать:server { listen 80; server_name server1.example; ... include /etc/nginx/include.d/your-common-stuff.conf; } server { listen 80; server_name another-one.example; ... include /etc/nginx/include.d/your-common-stuff.conf; }
Edit: вот пример, который на самом деле скопирован с моего запущенного сервера. Я настраиваю свои основные параметры сервера в
/etc/nginx/sites-enabled
(обычный материал для nginx на Ubuntu / Debian). Например, мой главный серверbunkus.org
конфигурационный файл/etc/nginx/sites-enabled
и выглядит это так:server { listen 80 default_server; listen [2a01:4f8:120:3105::101:1]:80 default_server; include /etc/nginx/include.d/all-common; include /etc/nginx/include.d/bunkus.org-common; include /etc/nginx/include.d/bunkus.org-80; } server { listen 443 default_server; listen [2a01:4f8:120:3105::101:1]:443 default_server; include /etc/nginx/include.d/all-common; include /etc/nginx/include.d/ssl-common; include /etc/nginx/include.d/bunkus.org-common; include /etc/nginx/include.d/bunkus.org-443; }
в качестве примера здесь
/etc/nginx/include.d/all-common
файл, который включен от обоихserver
контекстах:index index.html index.htm index.php .dirindex.php; try_files $uri $uri/ =404; location ~ /\.ht { deny all; } location = /favicon.ico { log_not_found off; access_log off; } location ~ /(README|ChangeLog)$ { types { } default_type text/plain; }