パブリック サブネットとプライベート サブネットを使用して Amazon Web Services VPC をセットアップしています。DNS リクエストを受信するパブリック サブネット上に nginx サーバーがあります。ただし、これらのリクエストをプライベート サブネット Web サーバーにリダイレクトしたいと考えています。curl を使用して nginx マシンからプライベート サブネット マシンのプライベート IP (パブリックにルーティングできない) への AWS/VPC ルーティングをテストしました。Curl は期待どおりの結果を返します。ただし、同じプライベート IP に nginx で 301 を返すと、リダイレクトがルーティング テーブル ルールの外側で発生し、有効なアドレスとして認識されないかのように、結果は検索エンジンの結果になります。不足しているnginx構成はありますか?
2369 次
1 に答える
4
はい - 「リダイレクト」はクライアント ブラウザに 301 または 302 コードとアクセスするための新しいアドレスで応答することを覚えておいてください。アドレスがパブリックにルーティング可能でない場合、プロキシ サーバー (nginx) ではなくブラウザーがリダイレクト アドレスを要求しているため、失敗します。これを証明するために、nginx をhttp://www.yahoo.comにリダイレクトするように設定すると、うまく動作します。
代わりに、nginx のプロキシ機能を使用する必要があります。これは、nginx がリクエストを受信し、それらをプロキシされたサーバーに渡し、それらから応答を取得し、クライアントに送信することを意味します。
最も基本的な実装は、nginx 構成ファイルのサーバー ディレクティブ内に location ディレクティブを作成することです。
location / {
proxy_pass http://10.0.0.5/;
}
これにより、パブリック IP へのすべてのリクエストがプライベート IP に渡されます。もちろん、リクエスト/レスポンス ヘッダーやリソースなどを使ってできることはたくさんあります。簡単なプロキシ サーバーの設定から始めるのがよいでしょう。このリンクには、さらにいくつかの構成オプションもあり、良い例です。
于 2014-03-19T02:21:08.973 に答える