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 oserver_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
.