Express.js での IP アドレス取得
Express.js でリモートクライアントアドレスを取得する
Node.js と Express.js を使用して、リモートクライアントの IP アドレスを取得する方法を説明します。
Express.js のミドルウェアを使用する
- req.socket.remoteAddress
req.connection.remoteAddress
と同じです。 - req.connection.remoteAddress
このプロパティは、クライアントの IP アドレスを直接取得します。
const express = require('express');
const app = express();
app.get('/', (req, res) => {
const clientIp = req.connection.remoteAddress;
console.log('Client IP:', clientIp);
res.send('Hello from Express!');
});
app.listen(3000, () => {
console.log('Server listening on port 3000');
});
ip モジュールを使用する
- req.headers['x-forwarded-for']
プロキシサーバーまたはロードバランサーを通過した場合に、クライアントの IP アドレスがヘッダーに含まれることがあります。 - ip.address()
現在のコンピュータの IP アドレスを取得します。
const express = require('express');
const ip = require('ip');
const app = express();
app.get('/', (req, res) => {
const clientIp = req.headers['x-forwarded-for'] || ip.address();
console.log('Client IP:', clientIp);
res.send('Hello from Express!');
});
app.listen(3000, () => {
console.log('Server listening on port 3000');
});
注意
ip.address()
は、サーバーの IP アドレスを取得します。クライアントの IP アドレスを取得するには、req.connection.remoteAddress
またはreq.headers['x-forwarded-for']
を使用してください。req.headers['x-forwarded-for']
は、プロキシサーバーまたはロードバランサーの設定によって異なる場合があります。信頼できないソースからの IP アドレスを直接使用しないように注意してください。
const express = require('express');
const app = express();
app.get('/', (req, res) => {
const clientIp = req.connection.remoteAddress;
console.log('Client IP:', clientIp);
res.send('Hello from Express!');
});
app.listen(3000, () => {
console.log('Server listening on port 3000');
});
- app.listen(3000, () => {})
ポート 3000 でサーバーを起動します。 - res.send('Hello from Express!')
クライアントに "Hello from Express!" というメッセージを送信します。 - console.log('Client IP:', clientIp)
コンソールにクライアントの IP アドレスを出力します。 - app.get('/')
GET リクエストがルートパス/
に届いたときに実行されるハンドラー関数を定義します。 - require('express')
Express.js モジュールをインポートします。
const express = require('express');
const ip = require('ip');
const app = express();
app.get('/', (req, res) => {
const clientIp = req.headers['x-forwarded-for'] || ip.address();
console.log('Client IP:', clientIp);
res.send('Hello from Express!');
});
app.listen(3000, () => {
console.log('Server listening on port 3000');
});
- ||
または演算子を使用して、req.headers['x-forwarded-for']
が存在しない場合にip.address()
の値を使用します。 - require('ip')
ip
モジュールをインポートします。
request-ip モジュールを使用する
- requestIp.getClientIp(req)
クライアントの IP アドレスを自動的に検出します。
const express = require('express');
const requestIp = require('request-ip');
const app = express();
app.get('/', (req, res) => {
const clientIp = requestIp.getClientIp(req);
console.log('Client IP:', clientIp);
res.send('Hello from Express!');
});
app.listen(3000, () => {
console.log('Server listening on port 3000');
});
- helmet.ip()
クライアントの IP アドレスを信頼できるソースから取得します。 - helmet.hidePoweredBy()
サーバーのソフトウェア情報を隠します。
const express = require('express');
const helmet = require('helmet');
const app = express();
app.use(helmet());
app.get('/', (req, res) => {
const clientIp = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
console.log('Client IP:', clientIp);
res.send('Hello from Express!');
});
app.listen(3000, () => {
console.log('Server listening on port 3000');
});
proxy-addr モジュールを使用する
const express = require('express');
const proxyAddr = require('proxy-addr');
const app = express();
app.get('/', (req, res) => {
const clientIp = proxyAddr(req);
console.log('Client IP:', clientIp);
res.send('Hello from Express!');
});
app.listen(3000, () => {
console.log('Server listening on port 3000');
});
node.js express ip