我使用节点作为后端服务器,使用 nginx 作为反向代理服务器。
我想将用户 ip 地址存储在我的数据库中。为此,我在博客和论坛上搜索并找到了public-ip npm 模块
之后我在服务器上进行了测试,发现这个模块将返回我的 EC2 实例公共 IP 而不是用户公共 IP。
在网上找到这个问题后,再次发现这可能是由于使用了反向代理。
为此,我需要在我已经做过的位置块下添加此代码。
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
并且需要在我的快递服务器上添加此代码
app.set('trust proxy', true)
并调用它来获取 IP
req.header('x-forwarded-for') or req.connection.remoteAddress
更新这是我的 nginx 配置
location / {
include /etc/nginx/proxy_params;
proxy_pass http://127.0.0.1:3001;
}
My proxy_params is
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_redirect off;
proxy_cache_bypass $http_upgrade;
我需要询问如何在某些函数或任何 API 调用中使用它。它肯定会返回我的客户端IP吗?
非常感谢任何帮助或建议。提前致谢。