Como apontado por Michael Hampton. Eu posso usar o módulo IP real. Eu não estava ciente disso.
O seguinte funcionou.
http {
real_ip_header X-Forwarded-For;
set_real_ip_from 0.0.0.0/0;
}
O Nginx tem um ótimo recurso que permite restringir o acesso a recursos por endereço IP de origem.
No entanto, notei que pode não funcionar em situações em que o nginx está por trás de um proxy ou de um balanceador de carga. No meu caso, o Amazon ELB.
Eu quero fornecer uma página de status para o agente de datadog e as verificações de integridade do Amazon ELB. Então eu quero permitir conexões locais e aquelas do ELB, mas negar todo o resto.
O seguinte não funciona como esperado, pois permite que o tráfego originado fora do ELB também acesse a página de status. O motivo é porque o IP parecerá ter origem no ELB e as regras de permissão não examinam os cabeçalhos para determinar a origem real da solicitação. Existe uma maneira de dizer ao nginx qual IP de origem usar para determinar regras de permissão / negação?
location /status {
stub_status;
access_log off;
allow 127.0.0.1;
allow 10.0.0.0/16;
deny all;
}
Tags nginx