Имя журнала доступа Nginx на основе не-WWW хоста - PullRequest
0 голосов
/ 26 июня 2018

Итак,

У меня есть сервер с около 30 конфигурациями виртуальных хостов, каждый в отдельном файле. На данный момент моя главная цель - назвать журнал доступа на основе переменной $host.

В настоящее время я использую следующее, внутри моего блока HTTP, которое будет применяться ко всем файлам conf:

http {
    access_log /var/log/nginx/$host.access.log
}

Я хотел бы иметь возможность переписать вышеуказанное $host без www. и просто сохранить сам домен. Для этого я нашел следующее решение:

    if ($domain ~* www\.(.*)) {                                                                                                                                                                              
            set $domain $1;                                                                                                                                                                                  
            rewrite ^(.*)$ http://$domain$1 permanent;                                                                                                                                                       
    }

Единственная проблема заключается в том, что директивы 'IF' не допускаются внутри блока 'http'. Могу ли я в любом случае добиться этого, оставаясь в пределах блока 'http'? Может быть, используя «карту»?

Заранее спасибо,

Tom

1 Ответ

0 голосов
/ 26 июня 2018

Вы должны использовать карту

http {
   map $host $hostw {
        default         $host;
        ~*^www\.(.*)     $1;
   }
    access_log /var/log/nginx/$hostw.access.log
}
...