プロキシの背後にあるエクスプレス
リバースプロキシの背後で Express アプリケーションを実行する場合、Express API の中には予想以外の値が返されるものがあります。 これを調整するために trust proxy アプリケーションの設定は、Express API のリバースプロキシによって提供された情報を公開するために使用することができます。 最も一般的な問題は、クライアントのIPアドレスを公開するAPIで、リバースプロキシの内部IPアドレスが表示される可能性があります。
trust proxy の設定では、
リバースプロキシの正確な設定を理解することが重要です。 この設定はリクエストで提供された値を信頼するためです Express での設定の組み合わせが
リバースプロキシの動作と一致することが重要です。
trust proxyを設定するアプリケーションは、次の表に示されている値のいずれかを設定することができます。
| 値 | |
|---|---|
| Boolean |
|
| IPアドレス | リバースプロキシとして信頼する IP アドレス、サブネット、または IP アドレスとサブネットの配列。 次のリストに、事前に設定されたサブネット名が表示されます。
IPアドレスは以下のいずれかの方法で設定できます。 指定された場合、IPアドレスまたはサブネットはアドレス決定プロセスから除外されます。 アプリケーションサーバーに最も近い信頼できないIPアドレスは、クライアントのIPアドレスとして決定されます。 これは |
| 数字 | Expressアプリケーションから離れたホップの最大数のアドレスを使用してください。 この設定を使用する場合は、複数がないことを確認することが重要です。 Expressアプリケーションへの異なる長さのパスは、クライアントが設定されたホップ数よりも少なくすることができるようになります。 それ以外の場合は、クライアントが何らかの価値を提供することができます。 |
| 関数 | カスタムトラスト実装。 |
trust proxy を有効にすると、次のような影響を与えます。
req.hostname の値は、
X-Forwarded-Hostヘッダで設定された値から取得されます。 クライアントやプロキシによって設定できますX-Forwarded-Protoはリバースプロキシによって設定することで、アプリが httpsかhttp` か無効な名前かをアプリに伝えることができます。 この値は req.protocol で反映されます。req.ip と req.ips の値は、 ソケットアドレスと
X-Forwarded-Forヘッダーに基づいて入力されます。 最初の信頼されていないアドレスから始めます
trust proxy は、 proxy-addr パッケージを使用して実装されています。 詳細については、そのドキュメントを参照してください。