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>
}
}