Permitir localização no NGINX com base em IP - pedido vem de verniz

1

Se o Varnish estiver definido como o Cache padrão na frente do meu back-end do NGINX, como posso fazer check-in no back-end do NGINX para o IP original do cliente e tomar uma decisão com base nisso?

Eu quero permitir um determinado diretório apenas para determinados IPs. O verniz em frente ao NGINX significa que toda solicitação vem de 127.0.0.1 . Estou pensando em configurar um cabeçalho HTTP personalizado, mas como eu posso verificar isso em conjunto com location ~ /folder/ {} section?

    
por chevallier 04.09.2018 / 14:17

1 resposta

2

Por padrão, o Varnish 4 configuraria X-Forwarded-For header como o IP real do cliente, mas o NGINX ignoraria isso, a menos que você o configure explicitamente.

Adicione estas linhas à sua configuração nginx no bloco do servidor que faz uso do ngx_http_realip_module :

server {
    listen 80;
    set_real_ip_from   127.0.0.1;
    real_ip_header     X-Forwarded-For;
    <Other Server Options>
}

Se você usa o Ubuntu, o módulo já está habilitado por padrão. No entanto, para algumas distribuições do Linux você pode ter que habilitar ou instalá-lo manualmente. Você pode verificar os módulos configurados por:

nginx -V

Não se esqueça de recarregar o nginx depois de atualizar a configuração:

sudo service nginx reload

Uma vez que o nginx é capaz de obter o IP real do cliente definido pelo verniz, você só precisa colocar as opções de permissão e negação nos blocos de localização:

server {
    <Server Options>
    location ~ /folder/ {
        allow <IP to whitelist>;
        deny all;
        <Location Options>
    }
}
    
por 04.09.2018 / 14:34

Tags