
私のクライアントは、すべての事業を元の場所から移動せずに 1 つの傘下に統合することを要求しています。たとえば、彼はすでに realestate.com と movers.com としてサイトを運営していますが、corporate.com の下に統合して、corporate.com/real リンクが real.corporate.com にマップされ、realestate.com でホストされている Web サイトを表示するようにしたいと考えています。これはリダイレクトではないため、URL バーには realestate.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 が変わります。現在、1 つのサイトでテストしており、サーバー ブロックは次のとおりです。
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;
ディレクティブに置き換える必要があります。