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