it-swarm.com.de

Nginx: Wann soll proxy_set_header verwendet werden? Host $ Host vs $ proxy_host

Ich habe über Reverse Proxy gelesen und frage mich, wann proxy_set_header Host $Host ist angemessen über proxy_set_header Host $proxy_Host. Ich habe ein paar Nachforschungen angestellt und in diesem Artikel steht, dass wir in den meisten Fällen Host auf $ Host setzen. Warum verwendet nginx dann standardmäßig $ proxy_host? Funktioniert die Reverse-Proxy-Konfiguration hier (am Ende des Artikels) weiterhin, wenn wir stattdessen $ proxy_Host verwenden?

Vielen Dank

11
Alex H

Im Allgemeinen ist es nicht erforderlich, proxy_set_header Host proxy_Host Explizit auszuführen, da dies die Standardeinstellung ist. Wenn Sie einen Server über etwas aufrufen müssen anderes als in der Direktive proxy_pass Angegeben -, müssen Sie dies über proxy_set_header something Überschreiben.

Wenn Sie den gleichen -Host wie in Ihrer server_name - Direktive als Proxy verwenden möchten, haben Sie Gelegenheit, proxy_set_header $Host Zu verwenden. Dies ist normalerweise der Fall, wenn die eigentliche Anwendung möglicherweise an einem anderen Port oder auf einem internen Server gehostet wird.

server {
    listen 80;
    server_name site.example.com;

    location / {
       proxy_set_header Host $Host;
       proxy_pass http://localhost:8080;
    }
}

Wenn der Name, den Sie den Upstream anrufen, nicht der tatsächliche DNS-Name ist, haben Sie möglicherweise Folgendes:

# 192.168.2.1 responds to site.example.com, but
# site.example.com doesn't actually resolve to 192.168.2.1
proxy_pass http://192.168.2.1;
proxy_set_header Host site.example.com;

Ein anderer Fall könnte für "namensbasiertes" virtuelles Hosting sein, bei dem es einen nützlichen DNS-Namen für den Upstream gibt, den Sie jedoch gerne mit einem anderen Namen bezeichnen möchten.

proxy_pass http://Origin.example.com;
proxy_set_header Host site.example.com
17
Joshua DeWald