注:
nginx代理到nodeJs服务,访问nginx时把获取ip的请求头带给node,然后在node获取携带ip的请求头
Nginx配置
location / {
proxy_pass http://127.0.0.1:8808;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
node代码
const express = require('express')
const app = express()
const getClientIp = (req) => {
const forwardedFor = req.headers['x-forwarded-for']
if (forwardedFor) {
const ips = forwardedFor.split(', ')
return ips[0]
}
return req.connection.remoteAddress
}
app.get('/', (req, res) => {
const ip = getClientIp(req)
res.send(ip)
})
app.listen(8808, () => {
console.log('start server 8808')
})