Ответ 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;
}
Изменить: Вот пример, который фактически скопирован с моего работающего сервера. Я настраиваю базовые настройки сервера в /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;
}