javascript - 获取请求的真实 IP 地址而不是 Cloudflare 的 IP 地址
问题描述
Cloudflare 会更改传入请求的 IP 地址,因为 Cloudflare 是我的网站和 Internet 之间的中间件,即代理。
我应该如何获取请求的初始 IP 地址,而不是 Cloudflare 的 IP 地址。我听说过,mod_cloudflare
但是这个插件是否只更新我日志中的 IP 地址(?)而且我没有找到 NGINX 的版本。
解决方案
Cloudflare在每个请求上设置CF-Connecting-IP
和X-Forwarded-For
标头
您可以简单地从他们的特殊标头中获取 IP:
let ip = req.headers['cf-connecting-ip']
如果您期望 Cloudflare 之外的请求,您可以通过以下方式获取这些 IP:
let otherIp = req.headers['x-forwarded-for'] || req.connection.remoteAddress
不过,请注意,其他代理(如 NGINX)也会设置x-forwarded-for
标头。
推荐阅读
- c# - 有没有办法启动在 Windows 中提供的 EventStore(根本不使用 docker)?
- git - 在 git 中推送部分文件更改
- amazon-web-services - Slurm 使用什么机制在计算节点和主节点之间同步文件?是加密的吗?
- regex - 用于在字符串上搜索 3 个不同字符串中的任何一个的正则表达式
- python - 在 Python 中拦截类属性的动态分配
- javascript - Netlify 构建过程中的 Netlify,toml vs package.json
- python - 基于多对多关系在 Django 查询中进行注释
- python - Python matplotlib 仅在条件匹配时才在绘图下方添加文本
- laravel-8 - 在 api.php Laravel + Jetstream + Inertia.js 中保护 apiResource
- python - ValueError:无法将字符串转换为浮点数:'erght'