跳到主要内容

网站获取访客真实 IP

网站隧道会自动在请求头里带上访客真实 IP,只需让网站或 Nginx 读取它。

适用场景

网站的访问日志、登录记录里显示的都是 127.0.0.1 或客户端电脑的 IP,想看到真实访客 IP。适用于 HTTP/HTTPS 隧道。

前置条件

  • 隧道协议是 HTTP 或 HTTPS。
  • 客户端是最新版(老版本会提示需要升级客户端)。
  • 能修改网站或 Nginx 的配置。

操作步骤

第 1 步:了解平台带上的请求头

HTTP/HTTPS 隧道会自动在每个请求里加上下面的请求头,无需在控制台设置:

请求头 内容
X-Real-IP 访客真实 IP
X-Forwarded-For 访客真实 IP(平台会覆盖访客自己伪造的值)
Forwarded 标准格式的来源信息
X-WYC-Request-ID 本次请求编号,排查问题时用

第 2 步:让 Nginx 读取真实 IP

网云穿客户端和 Nginx 在同一台电脑时,在 Nginx 的 server 或 http 段加入:

set_real_ip_from 127.0.0.1;
real_ip_header X-Forwarded-For;
real_ip_recursive off;

客户端在另一台电脑时,把 127.0.0.1 换成那台电脑的固定内网 IP。不要写成 0.0.0.0/0,否则任何人都能伪造 IP。

然后检查配置并重载:

nginx -t
nginx -s reload

成功后会看到 nginx -t 输出 syntax is ok 和 test is successful。

其他程序(如 Java、PHP、Node 框架)在“可信代理”设置里填客户端电脑的 IP,并读取 X-Forwarded-For 或 X-Real-IP。

第 3 步:验证

用手机流量访问网站,查看网站或 Nginx 的访问日志。

成功后会看到:日志里的 IP 是手机流量的公网 IP,而不是 127.0.0.1。

成功检查

  • 日志里显示的是访客公网 IP。
  • 换一个网络访问,日志里的 IP 跟着变化。

常见错误

现象 怎么办
日志里还是 127.0.0.1 程序还在读连接地址,按第 2 步配置可信代理
客户端提示需要升级 到 下载页 安装最新版客户端
公网入口前面还有自己的负载均衡 联系客服确认支持情况

同一个公司出口的多个人会显示同一个 IP,IP 不能代替账号登录。

相关教程

TCP 获取真实 IP(PROXY v2) · 发布网站 · Nginx realip 官方文档