クライアントとサーバのIPアドレスとポート番号を知る方法を見つけるために多くの検索を試みました。これまでのところ私が見つかりました:Node.jsでクライアントとサーバのIPアドレスとポート番号を取得する方法
- クライアントのIPを:
req.ip
によって知ることができます。 - クライアントポート:私は多くを検索しましたが、このクライアントエフェメラルポートを見つける方法が見つかりませんでした。
req
とres
オブジェクトを調べたところ、クライアントのIPアドレスとポート番号がres.connection._peername
になることがあります。しかし、これはポート番号を見つける信頼できる方法ではありません。なぜなら、このプロパティが不足しているリクエストがあるからです。それで、ポートについて知る正しい方法は何ですか? - サーバーip:ここでは、サーバーの外部IPまたは公開IPを知りたいと考えています。私は同じものを少し探し、私はこの外部のIPを取得するためにいくつかの外部APIを使用してこのlinkを見つけました。それは外部IPを見つける唯一の方法ですか?それとも他の方法もありますか?
- サーバーポート:
listener.address().port
[source]で知ることができます。しかし、それはreq
またはres
オブジェクトから知ることができますか?実際に私はreq
、res
、next
(基本的にはapp.use(function(req,res,next){...}))
)のミドルウェア内からポート番号を知りたいと思っています。
'req.ip'は、Expressが内部の信頼の代理処理に使用するものです。 Expressが使用されている場合は、 'req.connection.remoteAddress'よりも使用する方が良いでしょう。ポートについては、上流のプロキシは通常その情報を送信しません。 – Brad
@ブラッド - 私は 'req.ip'のためのサポートコードを見つけることができませんでしたので、私は実際のコードで見つかった値を信頼することを喜んで受け入れていませんでした。 'req.connection'はhttpリクエストの' Socket'オブジェクトであり、これらの4つのプロパティはnode.js内の任意のTCP接続のプロパティですExpressはさらに何かを行うかもしれませんが、これらは基本的なソケット実装から直接得られます。はい、プロキシはリモート接続に関する情報を隠すかもしれません - 私の答えはそれを言います。 – jfriend00
そうですね、上流の代理についてのご意見にお答えしました。ここでは、信頼プロキシの設定について読むことができます。http://expressjs.com/ja/api.htmlあなたの提案は、ただちに接続することができます。しかし、リクエストIPが実際にどのようなもので、プロキシがあるのかを知りたい場合は、Expressの組み込み処理に頼るのが最も簡単です。 – Brad