1. ホーム
  2. node.js

[解決済み] express.jsの「trust proxy」は実際に何をするのか、また使う必要があるのか?

2023-07-24 23:20:15

質問

nginx サーバーの背後に位置する express アプリを作成しています。 express のドキュメントを読んでいたら、「trust proxy」設定について言及されていました。そこに書かれているのは

trust proxy リバースプロキシサポートを有効にする、デフォルトでは無効

Nodeでnginxを使ったセキュアセッションを解説しているこちらの小記事を読みました。

http://blog.nikmartin.com/2013/07/secure-sessions-in-nodejs-with-nginx.html

そこで、気になることがあります。 trust proxy' を true に設定するのは HTTPS を使用するときだけでしょうか? 現在、私のアプリはクライアントと nginx 間で HTTP のみ使用しています。 今これを true に設定した場合、注意しなければならない副作用や影響はありますか?今、それを true に設定することに意味はあるのでしょうか?

どのように解決するのですか?

で詳しく説明しています。 express behind the proxies ガイド

app.enable('trust proxy') によって "trust proxy" 設定を有効にすると、Express はプロキシの背後にあることを認識し、X-Forwarded-* ヘッダー フィールドを信頼できるようになり、それ以外の場合は容易になりすますことができるようになります。

この設定を有効にすると、いくつかの微妙な効果があります。その 1 つは、X-Forwarded-Proto がリバース プロキシによって設定され、アプリに https か単なる http かを伝えることができることです。この値は、req.protocol によって反映されます。

これによる 2 つ目の変更は、req.ip と req.ips の値に X-Forwarded-For のアドレスのリストが入力されるようになることです。