私はnginx設定に非常に慣れていません。私はそれを使用して、仮想ホストを設定し、同じサーバーの異なるポートで異なるNode JSアプリを実行できるようにしますが、それらを異なるサブドメインで提供します。検索した後、 stackoverflowは、私がやりたいことに対してうまく機能します。とりわけ、コードには次のロケーションブロックが含まれます
location / { │
proxy_set_header X-Real-IP $remote_addr; │
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; │
proxy_set_header Host $http_Host; │
proxy_set_header X-NginX-Proxy true; │
│
proxy_pass http://otherapp/; │
proxy_redirect off; │
}
今、私はスクリプトが何をするかを理解したかったです。私はnginxのドキュメントとさまざまな人々が投稿したメモを見て、いくつかのことを理解しました。上記のコードのproxy_set_header
以外のproxy_pass
行をすべて削除しても、必要な機能はおそらく機能するようです。上記のコードのさまざまなフィールドが何をしているのか知りたいです。たぶん、今のところ気づいていないことにも役立つでしょう。 proxy_set_header
モジュールのすべてのフィールドをリストして説明する場所はありますか?
ありがとうございました。
本質的には、プロキシが実行しているサーバーに情報を提供することです。順番に:
X-Real-IP
-nginxサービスはTCP接続。これは通常、特にログではかなり価値がありません。バックエンドサーバーは、通常のクライアントIPの代わりにこのヘッダーを使用して、ロギングやクライアントのIPが必要なその他の用途に使用できます。X-Forwarded-For
-これはX-Real-IP
に似た標準的なヘッダーですが、接続が通過したプロキシのチェーン全体に追加の接続ソースエントリを提供します。複数のエントリが存在する可能性があるため、バックエンドサーバーから解析して操作するのが少し面倒になる可能性があります。Host
-これは、アプリケーションで最も問題になる可能性が高いものです。通常、nginxがバックエンドサーバーに対して行う要求には、Host
ヘッダーに、構成したアドレス(この場合はhttp://otherapp/
)が含まれます。これは、名前ベースの仮想ホスティングを行うもの、または受信したHostヘッダーに基づいてリンクを生成するものにプロキシする場合は、おそらく望ましくありません。この構成は、クライアントがnginxを送信したHost
ヘッダーがバックエンドに送信されるようにしています(ApacheのProxyPreserveHost
と同等)。X-NginX-Proxy
-これは、プロキシが使用されていることを示すマーカーとして機能しているだけです。ほとんどの場合、おそらく役に立たないでしょう。