我的客户需要将所有企业合并到一个保护伞下,而无需将它们从原始位置移走。例如,他已经有一个以 realestate.com 和 movers.com 运行的网站,现在他想将它们合并到 corporate.com 下,这样 corporate.com/real 链接将映射到 real.corporate.com 并显示托管在 realestate.com 上的网站。这不是重定向,因此 URL 栏将显示 real.corporate.com 的 real.corporate.com,并且所有链接也将是相对的,例如 realestate.com/index.html 将显示为 real.corporate.com/index.html。realestate.com/portfolio/houses/pictures 将变为 real.corporate.com/portfolio/houses/pictures。我尝试使用 proxy_pass,但这会更改 URL。我目前正在一个网站上测试它,以下是我的服务器块
server{
listen 80;
location / {
proxy_pass http://www.realestate.com/;
sub_filter_once off;
proxy_redirect off;
proxy_set_header Host $host;
}
}
此设置直接将我带到realestate.com,并且浏览器中的URL也会更改。将位置更改为location /real
出现404错误。
请帮忙
答案1
您的配置未执行任何重定向。重定向由 处的上游 Web 服务器发送realestate.com
。
应用程序发送重定向到realestate.com
,因为请求未发送到应用程序中配置的域。
您可以使用以下方式更改此设置
proxy_set_header Host www.realestate.com;
此设置发送带有标头的上游代理请求Host: www.realestate.com
,这将使其最终到达上游服务器中的正确虚拟服务器。
不过,您仍然可能会遇到由 生成的链接的问题www.realestate.com
。
此外,如果www.realestate.com
发送任何 HTTP 重定向,则需要用proxy_redirect default;
指令替换重定向内容。