O log de erros do Nginx não lerá a variável

1

No meu vhost eu tenho:

root   /var/www/$server_name/public_html;
index  index.php;

access_log /var/log/nginx/$server_name.access.log;
error_log  /var/log/nginx/$server_name.error.log debug;

Para a raiz e o log de acesso, o $server_name work. Não funciona para o log de erros.

Eu vejo que é definido por raiz em vez de pi (eu uso pi em vez de data-www ) Como faço para corrigir isso?

nginx / 1.13.5

    
por janw 30.10.2017 / 22:11

1 resposta

3

Até onde eu sei, as variáveis ainda não são permitidas em error_log , mesmo que você possa usá-las em access_log (como sua captura de tela mostra que está funcionando corretamente em seu cenário).

Além disso, você deve quase sempre usar $host , pois é a única variável garantida para dizer algo sensato, independentemente do comportamento do agente do usuário.

Você pode verificar a diferença entre $ host e $ server_name na documentação do nginx :

  • $host : nesta ordem de precedência: nome do host da linha de solicitação ou nome do host do campo de cabeçalho de solicitação "Host" ou o nome do servidor correspondente a uma solicitação.

  • $server_name : nome do servidor que aceitou uma solicitação. Ele contém o server_name do host virtual que processou a solicitação, conforme definido na configuração nginx. Se um servidor contiver vários nomes_do_servidor, apenas o primeiro estará presente nesta variável.

Como você tem que considerar todas as coisas possíveis que um user-agent pode fazer, então formar uma requisição HTTP (antigos pedidos HTTP / 1.0 e software moderno mal escrito podem acontecer o tempo todo), você deve considerar usar apenas o $host variable para o seu propósito pretendido.

Vale a pena mencionar que access_log é tratado por ngx_http_log_module , enquanto error_log é tratado de forma um pouco diferente como ngx_core_module .

    
por 30.10.2017 / 22:54

Tags