Назад | Перейти на главную страницу

nginx server_name на основе $ hostname

На основе Nginx вики в $hostname переменная установить в имя хоста машины, возвращенное gethostname.

Я пробовал это и хотя gethostname не работает мой ящик Debian, он по-прежнему правильно возвращает хост. Затем я попытался использовать эту переменную $hostname установить server_name, но это не сработало.

Почему это так и есть ли другой способ сделать это?

server {
    listen   80;

    autoindex off;

    server_name  static.$hostname;
    root   /var/www/static;

    access_log  /var/log/nginx/localhost.access.log;

    location / {
        index  index.html;
    }

    error_page  404  /404.html;
    error_page  500 502 503 504  /50x.html;
}

Большинство переменных в nginx существуют только во время выполнения, а не во время настройки.

По этой причине большинство переменных нельзя использовать с server_name директива. поскольку $hostname - постоянное значение, есть явная проверка на именно $hostname в server_name обработчик.

Это позволяет только server_name быть установлен на $hostnameне static.$hostname. Вы можете исправить исходный код, чтобы он поддерживал эту функцию (ngx_http_core_module.c, искать $hostname), но вы не можете сделать это с существующим кодом.

Вы должны найти эти работы:

server_name static.*;