J'ai a.b
Domaine (par exemple) et souhaitez desservir des pages GitHub (username.github.io/project
) dans a.b/c
. Cela signifie que je veux aussi garder l'URL de mon navigateur à a.b/c
et montrer le contenu de username.github.io/project
.
J'ai des paramètres suivants dans le module nginx
location /c {
proxy_pass http://username.github.io/project;
proxy_redirect http://username.github.io http://a.b;
proxy_set_header Host $http_Host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_buffering off;
}
si je change proxy_set_header Host $http_Host
à proxy_set_header Host $proxy_Host
ou $Host
, il suffit de rediriger à http://username.github.io/project
qui n'est pas je voulais dire. Comment puis-je faire?
Envoyez simplement l'en-tête d'hôte droit à votre cible proxy par Suppression Le proxy_set_header Host $http_Host
ligne.
Si a.b
est configuré comme nom de serveur dans votre bloc serveur, alors vous n'avez même pas besoin de proxy_redirect
Directive Si vous utilisez une barre oblique de fuite dans votre préfixe de localisation et dans votre proxy_pass
cible comme expliqué dans la documentation :
Syntax: proxy_redirect default; proxy_redirect off; proxy_redirect redirect replacement; Default: proxy_redirect default; Context: http, server, location
[...]
Le remplacement par défaut spécifié par le paramètre par défaut utilise les paramètres de l'emplacement et des directives proxy_pass. Par conséquent, les deux configurations ci-dessous sont équivalentes:
location /one/ { proxy_pass http://upstream:port/two/; proxy_redirect default; } location /one/ { proxy_pass http://upstream:port/two/; proxy_redirect http://upstream:port/two/ /one/; }
[....]
Donc, cela devrait le faire:
server {
server_name a.b;
location /c/ {
proxy_pass http://username.github.io/project/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_buffering off;
}
}
utilisation
proxy_redirect off;
Donc, vos paramètres seront
location /c {
proxy_pass http://username.github.io/project;
proxy_redirect http://username.github.io;
proxy_set_header Host username.github.io;
proxy_set_header X-Host username.github.io;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_buffering off;
}