Nginx で proxy_pass を使用するとログインしたり、何らかのアクションを実行したりできない

Nginx で proxy_pass を使用するとログインしたり、何らかのアクションを実行したりできない

前回の質問ではnginxは特定のファイルとサブディレクトリを除くすべてを異なるIPに解決(ポイント)しますホワイトラベルの Web サイトとそのページを別の IP に解決し、いくつかのサブフォルダーとファイルをサーバー上に保持してそこから読み込む方法について質問しました。これは非常に簡単に実行でき、最終的な解決策は次のようになりました。

location /robots.txt {
   alias {DOCROOT};
}
server_name {SERVERNAME};
location ~ /\.php$ {
    proxy_pass  10.10.10.10 <== whitelabel ip;
    proxy_set_header Host            {SERVERNAME};
    proxy_set_header X-Forwarded-For myaccount.whitelabelsite.com;
    proxy_redirect off;
    proxy_set_header Connection "Keep-Alive";
    proxy_buffering off;
}

そのため、ここでは、自分のドメインのホワイトラベル Web サイトからすべてを読み込みますが、robots.txt はホスティングやその他のファイルから読み込むようにしています。

問題は、この方法を使用するとホワイトラベル サイトのアカウントにログインできないことです。

ディレクティブ{SERVERNAME}は基本的に私のドメイン名でありmydomain.com、ログインしようとするとmydomain.com/aff/panelページが開きますが、エラーは出力されず、ページが更新されるだけで何も行われません。誰かが予約をしたり、電子メールフォームを送信したりする場合も同様です。ページは開きますが、実際には何もアクションを実行しません。

DNS リダイレクトを使用していたときはすべてが機能していましたが、今は機能しません。ホワイトラベルとの間で転送されるプロキシ情報またはヘッダーの post/get アクションが不足しているのでしょうか?

答え1

ホストが正しく設定されていないと、「whitelabelsite.com」のバックエンド アプリケーションが正常に動作しない可能性があります。ホスト ヘッダーを、自分のホスト名ではなく、プロキシ先のホスト名に設定してください。

proxy_set_header Host myaccount.whitelabelsite.com

本当に必要ですかproxy_redirect off? これにより、バックエンド サイトがリダイレクトを送信できなくなる可能性があります。

また、問題とは関係ないと思われますが、X-Forwarded-Forクライアントの IP アドレスである必要があります。nginx には、IP を適切に追加するための特別な変数があります。

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

完全な詳細にアクセスできないため、推測に過ぎませんが、お役に立てれば幸いです。

関連情報