Может ли путь доступа Nginx принимать переменную? - PullRequest
0 голосов
/ 15 ноября 2018

Я хочу поместить переменную $ host в путь к файлу Nginx access_log:

http {
   log_format compression '$remote_addr - $remote_user [$time_local] '
                       '"$request" $status $body_bytes_sent '
                       '"$http_referer" "$http_user_agent" 
   "$gzip_ratio"';

 server {
     gzip on;
     access_log /var/logs/$host.access.log compression;
 }
}

На основе Nginx doc: http://nginx.org/en/docs/http/ngx_http_log_module.html, $ host является встроенной переменной и должна работать в журналедорожка.Тем не менее, это не работает в моем случае.Кто-нибудь может дать некоторые подсказки здесь?Моя версия Nginx - 1.10.Спасибо

1 Ответ

0 голосов
/ 15 ноября 2018

Попробуйте сначала задать параметр server_name. Также посмотрите на этот рабочий пример:

server {
            if ($host ~* www\.(.*)) {
                    set $host_without_www $1;
                    rewrite ^(.*)$ http://$host_without_www$1/ permanent;
            }
            server_name_in_redirect off; #or folders like /awstats will redirect to _
            listen 80;
            server_name _;
            access_log      /var/log/nginx/$host.access_log main;
            error_log      /var/log/nginx/$host.access_log info;
            root /var/www/$host/htdocs;
            location ~ \.php$ {
                    include /etc/nginx/fastcgi_params;
                    fastcgi_pass  127.0.0.1:1026;
                    fastcgi_index index.php;
            }
    #For WP
            if (!-e $request_filename) {
                    rewrite ^(.+)$ /index.php?q=$1 last;
            }
    }
...