前提・実現したいこと
下記サイト[1]を参考にnode.jsのExpressを使用したサーバのHTTPアクセスログを表示しようとしております。
morganモジュールにより、下記のようなアクセスログは表示されたのですが、nginx経由でアクセスしているため、すべてのipアドレスが自分自身(127.0.0.1)になってしまっています。
ここをアクセスしてきたIPアドレスを表示するように変更したいのですが、方法がございますでしょうか?
$ node index.js ::ffff:127.0.0.1 - - [24/Jun/2020:01:03:35 +0000] "GET /test/hello HTTP/1.1" 200 38 "-" "Wget/1.19.4 (linux-gnu)" ::ffff:127.0.0.1 - - [24/Jun/2020:01:04:19 +0000] "GET /test/hello HTTP/1.1" 200 38 "-" "Wget/1.19.4 (linux-gnu)" ::ffff:127.0.0.1 - - [24/Jun/2020:01:07:38 +0000] "GET /test/hello HTTP/1.1" 200 38 "-" "Wget/1.19.4 (linux-gnu)"
試したこと
下記参考サイト[2]を参考に、proxy_set_header X-Forwarded-Forの設定を行ったところ、
下記コードで実際のアクセス元IPを取得することはできました。
ただし、この場合すべてのapp.getにこの記述が必要ですし、できれば見やすいmorganのログのipアドレス部分を書き換えたく思っており方法を探しております。
app.get('/ip', (req, res) => { const ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress; res.send(ip); });
参考にしたサイト
[1]https://maku77.github.io/nodejs/express/access-log.html
[2]https://blog.capilano-fw.com/?p=5881