На основе 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.*;