Permitir ubicación en NGINX según IP: la solicitud proviene de Varnish

Permitir ubicación en NGINX según IP: la solicitud proviene de Varnish

Si Varnish está configurado como caché predeterminado frente a mi backend de NGINX, ¿cómo puedo verificar en el backend de NGINX la IP original del cliente y tomar una decisión basada en eso?

Quiero permitir un determinado directorio sólo para determinadas IP. Varnish está frente a NGINX, lo que significa que cada solicitud proviene de 127.0.0.1. Estoy pensando en configurar algún encabezado HTTP personalizado, pero ¿cómo podría verificarlo junto con location ~ /folder/ {}la sección?

Respuesta1

Por defecto Varnish 4 estableceríaEncabezado X-reenviado-paracomo la IP real del cliente, pero NGINX la ignorará a menos que la configure explícitamente.

Agregue estas líneas a su configuración de nginx en el bloque del servidor que hace uso delngx_http_realip_module:

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

Si usa Ubuntu, el módulo ya está habilitado de forma predeterminada. Sin embargo, para algunas distribuciones de Linux, es posible que deba habilitarlo o instalarlo manualmente. Puede verificar los módulos configurados mediante:

nginx -V

No olvide recargar nginx después de actualizar la configuración:

sudo service nginx reload

Una vez que nginx pueda obtener la IP real del cliente configurada por Varnish, solo necesita colocar opciones de permitir y denegar en los bloques de ubicación:

server {
    <Server Options>
    location ~ /folder/ {
        allow <IP to whitelist>;
        deny all;
        <Location Options>
    }
}

información relacionada