nginx を使用して企業のアンブレラサイトを作成する

nginx を使用して企業のアンブレラサイトを作成する

私のクライアントは、すべての事業を元の場所から移動せずに 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 /real404 エラーが発生します。

助けてください

答え1

設定によりリダイレクトは行われません。リダイレクトは、 のアップストリーム Web サーバーによって送信されますrealestate.com

realestate.comリクエストがアプリケーションで設定されたドメインに送信されないため、アプリケーションは にリダイレクトを送信します。

これを変更するには、

proxy_set_header Host www.realestate.com;

この設定により、アップストリーム プロキシ リクエストがHost: www.realestate.comヘッダー付きで送信され、アップストリーム サーバーの適切な仮想サーバーに届くようになります。

ただし、 によって生成されたリンクでは問題が発生する可能性がありますwww.realestate.com

さらに、www.realestate.comHTTP リダイレクトを送信する場合は、リダイレクトの内容をproxy_redirect default;ディレクティブに置き換える必要があります。

関連情報