Пользовательские переменные в конфигах nginx

Заведение и поддержка некоторого количества доменов на сервере требует унификации подхода к их настройке. Обычно в параметрах присутствует имя домена (помимо servar_name  конечно):


server {
        
    listen 80;
        listen [::]:80;
        server_name blogger.com;

        access_log /var/log/nginx/blogger.com/access.log;
    error_log /var/log/nginx/blogger.com/error.log;
        
        location / {
            root /www/blogger.com/content;
            index index.html;
        }
    }


и, само собой, очевидно что руки тянутся сделать вот так:


server {

    set $myhost blogger.com;

  
    listen 80;
        listen [::]:80;
        server_name $myhost;

        access_log /var/log/nginx/$myhost/access.log;
    error_log /var/log/nginx/$myhost/error.log;
        
        location / {
            root /www/$myhost/content;
            index index.html;
        }
    }

увы - ничего не выйдет ((

худо-бедно Nginx разрешает использовать свою системную переменную $host в пути к файлам логов, т.е. вот так

        access_log /var/log/nginx/$host/access.log;
    error_log /var/log/nginx/$host/error.log;

с остальными  же частями, увы, придется возиться вручную


Какие вараанты? Python или bash скрипт. Все просто. Он и директории создаст,  и файл конфига заполнит, и владельца / права поменяет.

Комментарии