J'ai lu sur le proxy inverse et je me demande quand proxy_set_header Host $Host
est approprié sur proxy_set_header Host $proxy_Host
. J'ai fait quelques recherches et dans cet article il est dit que dans la plupart des cas, nous avons défini Host sur $ Host. Alors pourquoi nginx utilise-t-il par défaut $ proxy_host? Pour m'aider à comprendre plus concrètement, la configuration du proxy inverse ici (bas de l'article) fonctionnera-t-elle toujours si nous utilisons $ proxy_Host à la place?
Merci
En général, il n'est pas nécessaire de faire explicitement proxy_set_header Host proxy_Host
car c'est la valeur par défaut. Si vous devez appeler un serveur par quelque chose autre que ce qui est dans le proxy_pass
directive, vous devrez alors remplacer via proxy_set_header something
.
Si vous souhaitez proxy l'hôte identique tel qu'il était dans votre server_name
directive, vous auriez alors l'occasion d'utiliser proxy_set_header $Host
. Ce serait généralement le cas si l'application réelle est peut-être hébergée sur un autre port ou sur un serveur interne.
server {
listen 80;
server_name site.example.com;
location / {
proxy_set_header Host $Host;
proxy_pass http://localhost:8080;
}
}
Si le nom que vous appelez en amont n'est pas son nom DNS réel, vous pourriez avoir quelque chose comme:
# 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;
Un autre cas peut être pour l'hébergement virtuel "basé sur le nom" où il existe un nom DNS utile pour l'amont, mais vous souhaitez l'appeler par un autre nom.
proxy_pass http://Origin.example.com;
proxy_set_header Host site.example.com