у меня есть a.b
домен (например) и хотите обслуживать некоторые страницы github (username.github.io/project
) в a.b/c
. Это означает, что я также хочу сохранить URL-адрес своего браузера a.b/c
и отображение содержимого username.github.io/project
.
У меня следующие настройки в модуле 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;
}
если я изменю proxy_set_header Host $http_host
к proxy_set_header Host $proxy_host
или $host
, он просто перенаправляет на http://username.github.io/project
что не я имел в виду. Как я могу сделать?
Просто отправьте правильный заголовок Host вашей цели прокси, удаление в proxy_set_header Host $http_host
линия.
Если a.b
настроен как имя сервера в вашем блоке сервера, тогда вам даже не нужно proxy_redirect
директиве, если вы используете завершающую косую черту в префиксе местоположения и в proxy_pass
цель как объяснено в документации :
Syntax: proxy_redirect default; proxy_redirect off; proxy_redirect redirect replacement; Default: proxy_redirect default; Context: http, server, location
[...]
Замена по умолчанию, указанная параметром по умолчанию, использует параметры директив location и proxy_pass. Следовательно, две приведенные ниже конфигурации эквивалентны:
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/; }
[....]
Итак, это должно сделать это:
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;
}
}
использовать
proxy_redirect off;
Итак, ваши настройки будут
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;
}