Многоуважаемые, как решить задачи логирования и красивой организации конфигов nginx, когда адреса и с префиксом www/ftp/mysql… и без него хочется логировать в один файл в одной папке под заданный набор хостов?
upstream vserver_pool {
server 100.100.100.100:80;
}
root /var/log/nginx/;
access_log /var/log/nginx/$host-access.log;
error_log /var/log/nginx/error.log;
server {
listen 80;
server_name www.domain1.tld;
return 301 http://domain1.tld$request_uri;
root /var/log/nginx/$host/;
access_log /var/log/nginx/$host/$host-access.log;
}
..........................................
server {
listen 80;
server_name www.domain100500.tld;
return 301 http://domain100500.tld$request_uri;
root /var/log/nginx/$host/;
access_log /var/log/nginx/$host/$host-access.log;
}
Проблема красивой организации конфигов всплывают, когда есть потребность к каждому хосту прибавить набор идентичных правил проксирования. 10 раз добавить идентичный кусок:
server {
listen 80 default_server;
location ~ /\.ht {
deny all;
}
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location / {
proxy_pass http://vserver_pool;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_redirect off;
proxy_buffering off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
И 5 раз — не идентичный. Возникает проблема с иерархией. Я полагал, что частный случай конфига будет иметь приоритет, однако все, чего я добиваюсь — дублирование логов, в случае наличия префикса www в имени хоста.