Standortbestimmung in NGINX basierend auf IP zulassen – Anfrage kommt von Varnish

Standortbestimmung in NGINX basierend auf IP zulassen – Anfrage kommt von Varnish

Wenn Varnish als Standard-Cache vor meinem NGINX-Backend festgelegt ist, wie kann ich im NGINX-Backend nach der ursprünglichen IP des Clients suchen und auf dieser Grundlage eine Entscheidung treffen?

Ich möchte ein bestimmtes Verzeichnis nur bestimmten IPs erlauben. Da Varnish vor NGINX liegt, kommt jede Anfrage von 127.0.0.1. Ich denke darüber nach, einen benutzerdefinierten HTTP-Header festzulegen, aber wie kann ich das in Verbindung mit location ~ /folder/ {}Abschnitt überprüfen?

Antwort1

Standardmäßig setzt Varnish 4X-Forwarded-For-Headerals echte IP des Clients, aber NGINX würde dies ignorieren, sofern Sie es nicht explizit einrichten.

Fügen Sie diese Zeilen zu Ihrer nginx-Konfiguration im Serverblock hinzu, der denngx_http_realip_module:

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

Wenn Sie Ubuntu verwenden, ist das Modul bereits standardmäßig aktiviert. Bei einigen Linux-Distributionen müssen Sie es jedoch möglicherweise manuell aktivieren oder installieren. Sie können die konfigurierten Module folgendermaßen überprüfen:

nginx -V

Vergessen Sie nicht, nginx neu zu laden, nachdem Sie die Konfiguration aktualisiert haben:

sudo service nginx reload

Sobald nginx die von Varnish festgelegte echte IP des Clients abrufen kann, müssen Sie in den Standortblöcken nur noch die Optionen „Zulassen“ und „Verweigern“ platzieren:

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

verwandte Informationen