O Nginx tem um bom recurso que permite restringir o acesso aos 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 balanceador de carga. No meu caso, o Amazon ELB.
Desejo fornecer uma página de status para o agente datadog e as verificações de integridade do Amazon ELB. Portanto, quero permitir conexões locais e 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. A razão é porque o IP parecerá originário do 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 as 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;
}
Como apontado por Michael Hampton. Eu posso usar o Módulo Real IP. Eu não estava ciente disso.
O seguinte funcionou.