Я пытаюсь глобально отключить access_log и log_not_found для всего статического контента и для всех vhosts, работающих на одном экземпляре nginx.
Чтобы управлять глобальными настройками внутри блока server {}, я включил global/restrictions.conf
в блоке server {} каждого vhost.
Конфиги vhost выглядят так:
server {
listen 1.2.3.4:80;
server_name domain.com *.domain.com;
access_log /var/domains/domain.com-access.log combined;
error_log /var/domains/domain.com-error.log error;
root /var/www/domain.com/;
location / {
index index.php index.html index.htm;
try_files $uri $uri/ @rewrites;
}
location @rewrites {
rewrite ^ /index.php last;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/domain.com-php-fpm.socket;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
# Include global restrictions config
include global/restrictions.conf;
}
Глобальный файл конфигурации для всех vhosts в global / sizes.conf выглядит так:
# Global restrictions configuration file.
# Will be included in the server {] block of each vhost.
# Disable logging for robots.txt files <--- WORKS
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
# Disable logging for all static files <--- DOES NOT WORK (WHY??)
location ~ \.(atom|bmp|bz2|css|doc|docx|eot|exe|gif|gz|ico|jpeg|jpg|js|mid|midi|mp4|ogg|ogv|otf|png|ppt|rar|rss|rtf|svg|svgz|swf|tar|tgz|ttf|txt|wav|woff|xml|xls|xlsx|zip)$ {
log_not_found off;
access_log off;
}
Кажется, что правило для robots.txt отлично работает на всех vhosts, но каким-то образом правило с регулярным выражением для всех других статических файлов не работает, и я не могу понять, почему.
Есть идеи или предложения?
Исправил заменой location ~ \.
с участием location ~* ^.+.
Регулярное выражение вызвало проблему.