nginx nome_do_servidor baseado em $ hostname

7

Com base no wiki do Nginx , a variável $hostname é definida para o nome do host da máquina, conforme retornado por gethostname .

Eu tentei isso e, embora gethostname não funcione na minha caixa Debian, ele ainda retorna o host corretamente. Então tentei usar essa variável $hostname para definir o server_name , mas isso não funcionou.

Por que isso e existe outra maneira de conseguir isso?

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;
}
    
por RoboTamer 07.12.2011 / 12:30

2 respostas

5

A maioria das variáveis no Nginx existe apenas no tempo de execução, não durante o tempo de configuração.

Por esse motivo, a maioria das variáveis não pode ser usada com a diretiva server_name . Como $hostname é um valor constante, há uma verificação explícita para exatamente $hostname no manipulador server_name .

Ele permite que apenas o server_name seja definido como $hostname , não static.$hostname . Você pode consertar a fonte para torná-la compatível com esse recurso ( ngx_http_core_module.c , procure por $hostname ), mas você não pode fazê-lo com o código existente.

    
por 07.12.2011 / 13:09
0

Você deve descobrir que isso funciona:

server_name static.*;
    
por 08.02.2017 / 12:51