Se o Varnish estiver definido como o Cache padrão na frente do meu back-end NGINX, como posso verificar no back-end NGINX 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 estar na frente do NGINX significa que todos os pedidos vêm do 127.0.0.1
. Estou pensando em definir algum cabeçalho HTTP personalizado, mas como posso verificar isso em conjunto com a location ~ /folder/ {}
seção?
Por padrão, o Varnish 4 definiria o cabeçalho X-Forwarded-For como o IP real do cliente, mas o NGINX ignoraria isso, a menos que você o configurasse explicitamente.
Adicione estas linhas à sua configuração do nginx no bloco do servidor que faz uso do ngx_http_realip_module :
Se você usa o Ubuntu, o módulo já está habilitado por padrão. No entanto, para algumas distribuições Linux, talvez seja necessário habilitá-lo ou instalá-lo manualmente. Você pode verificar os módulos configurados por:
Não se esqueça de recarregar o nginx depois de atualizar a configuração:
Uma vez que o nginx é capaz de obter o IP real do cliente definido pelo Varnish, você só precisa colocar as opções de permissão e negação nos blocos de localização: