Como negar acesso pelo IP de origem quando estiver por trás do Amazon ELB ou outro proxy

5

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;
}
    
por Matt 09.03.2016 / 22:38

1 resposta

5

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;
}
    
por 09.03.2016 / 23:23

Tags