passando o endereço IP real de uma instância nginx para outra e escrevendo-o nos logs

passando o endereço IP real de uma instância nginx para outra e escrevendo-o nos logs

Movendo uma solicitação para meu servidor nginx interno, adiciono à chamada:

proxy_set_header X-Real-IP $remote_addr;

quando tento imprimir esse valor no log do nginx interno o container trava:

log_format verbose ' Real: $X-Real-IP ';

O que estou fazendo de errado? (Eu também tentei com "" em torno da variável, mas não ajudou.)

Responder1

O servidor recebe X-Real-IPcomo um dos cabeçalhos da solicitação HTTP. O Nginx disponibiliza cada um dos valores do cabeçalho da solicitação como uma variável.

O nome da variável para valores de cabeçalho de solicitação http começa com $http_. O nome do cabeçalho é convertido em letras minúsculas e cada hífen é substituído por um sublinhado.

Por exemplo, X-Real-IPestá disponível como$http_x_real_ip

Veresse documentopara detalhes.

Responder2

Pode-se usar ngx_http_realip_modulepara fazer o nginx usar o endereço IP nos cabeçalhos como o IP de origem em qualquer lugar dentro do nginx.

Está configurado da seguinte forma:

set_real_ip_from 192.168.1.1 # IP address of the external nginx
real_ip_header X-Real-IP;

Ao usar este módulo, não há necessidade de definir formatos de log próprios, o nginx gera o IP real do cliente em arquivos de log e todos os outros locais como o endereço IP de origem.

informação relacionada