首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

nginx 使用cdn后,客户访问的IP地址不真实,怎样获取真实IP

在 Nginx 使用 CDN(内容分发网络)后,客户访问的 IP 地址不真实是因为 CDN 会将 IP 地址缓存到遍布全球的服务器上。这导致原始服务器的 IP 地址可能无法被准确地追踪。为了解决这个问题,请参考以下建议,以获取 CDN 上客户访问的真实 IP:

思路与建议

  1. 使用 ngx_http_header_t 模块:

在 Nginx 配置文件中,使用 http\_header_t 模块来添加自定义头。在处理请求之前,使用 set\_header 标签添加一个新的头,名为 X-Forwarded-For,其值为一个逗号分隔的 IP 地址列表,CDN 服务器就在该列表中。

代码语言:nginx
复制

http

配置 Nginx 反向代理

...

server

}

...

代码语言:txt
复制
  1. 使用变量

为了使代码更简洁,可以将变量的值添加到自定义头 X-Forwarded-For 中。例如,在 Nginx 配置文件中添加以下内容:

代码语言:nginx
复制

http

代码语言:txt
复制
 ...

}

server

代码语言:txt
复制
 ...

}

...

代码语言:txt
复制

注意:使用 CDN 时,请确保您选定的 CDN 服务商已支持通过自定义头 X-Forwarded-For 获取真实访问者 IP 地址。部分便宜的 CDN 服务可能默认不支持该功能。

以下是一个完整的示例:

文件名:nginx.conf

代码语言:nginx
复制
http 
  
  ...
  server 
    ...
  }
  
  ...
}
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

获取CDN或Nginx的用户真实ip地址

目前问题:腾讯云CDN作为前端,Apache作为后端的情况下,Apache只能获取到腾讯云CDN前端的ip地址,而无法获取到用户的真实ip地址,在这种情况下,后端是Apache如何获取用户真实ip地址?...1.腾讯云CDN默认有提供X-Forwarded-For头部,用于记录客户端的真实ip地址,直接修改Apache的访问日志格式就可以使用 2.修改httpd.conf配置文件,添加X-Forwarded-For...Apache服务 3.成功获取用户的真实ip地址 2.png Nginx前端:118.89.171.94 Apache后端:115.159.120.41 目前问题:Nginx作为前端,Apache...作为后端的情况下,Apache只能获取到Nginx前端的ip地址,而无法获取到用户的真实ip地址,在这种情况下,后端是Apache如何获取用户真实IP地址?...4.成功获取用户的真实ip地址 6.png

7.3K140
  • WordPress使用CDN后显示真实IP地址

    WordPress在开启cdn之后会导致所有的访客用户的IP地址变成cdn的节点地址,导致无法分辨那个用户的归属地,如果您的评论有这个归属地的识别功能,有没有做过开启cdn后显示用户真实ip的处理,那么所有的用户都会显示来自同一个地方...,甚至攻击者都会直接的显示同一IP。...WordPress使用CDN后显示真实IP ---- 其实方法很简单,如果使wordpress开启cdn之后显示真的ip地址呢?...其实很简单,我们只需要将一串代码加入WordPress根目录下的wp-config.php文件中即可。...在wp-config.php文件的第一个<php标记后面粘贴下面的代码: [code]/**获取用户真实IP地址*/ if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])

    2.9K30

    Nginx反向代理后获取用户真实IP地址

    问题描述:nginx集群后无法获取用户真实的IP地址,得到的一直都是前端代理服务器。Nginx的地址有2台Nginx服务器,1台代理nacos集群,一台代理vue前端项目。...在登录前端页面时一直无法获取到真实的用户IP地址,获取到的是代理前端服务器的地址解决方法:在代理的后端地址中加上如下代码: proxy_set_header Host $host;...X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://xxxxxxx:8080/; //代理的后端接口地址}java获取IP地址...");if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {ip = request.getHeader("Proxy-Client-IP...");}if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {ip = request.getHeader("HTTP_CLIENT_IP

    1.6K00

    Nginx反向代理及获取真实的客户端IP地址

    然而,使用反向代理的同时,也引入了一个新的问题:如何获取到真实的客户端 IP 地址?Nginx 的作用与问题Nginx 作为一个反向代理,主要是接收来自客户端的请求,然后将请求转发给后端的服务器。...然而,这种设计也带来了一个问题:后端服务器无法获取到真实的客户端 IP 地址。在很多应用中,获取真实的客户端 IP 地址是非常重要的,例如,进行地理定位、检测欺诈行为、限制访问速率等。...结论在使用 Nginx 反向代理时,通过正确的配置,我们可以很方便地获取到真实的客户端 IP 地址。...使用以下命令来重启 Nginx:sudo service nginx restart或者sudo systemctl reload nginx在 Java 中获取真实的客户端 IP 地址有了 Nginx...这两个头都是在 Nginx 配置中设定的。结论使用 Nginx 作为反向代理服务器可以带来很多好处,例如负载均衡和安全防护。然而,它也会隐藏客户端的真实 IP 地址。

    11.5K30

    博客使用CDN网站加速怎么获取访客的真实IP地址

    最近各大媒体都新增了一个功能,根据IP显示归属地,为了紧跟时代五一假期后一直在写获取IP后显示归属地的办法,但是有点眼高手低了,心里想的挺好操作起来就没有那么省事了,经过重重测试,找接口写代码,CV工程师不是白来的...,最终代码完成,但是有一个致命的缺陷,那就是加载缓慢,最终还是决定使用唐朝纯真IP插件,显示IP属地已经解决了,但是又双叒叕遇到一个棘手的问题,因为博客采用了腾讯CDN,所以获取的IP地址都是CDN带来的...,不是真是的IP地址,腾讯CDN官方已经告知,HTTP头部已经自动开启“X_FORWARDED_FOR”标头,但是可能我设置不对,并没有显示真实的IP地址。...','mochu_cdnip_user_ip'); 显示真实IP代码: function mochu_cdnip_cmd_ip(&$cmt){     global $zbp;     $cmt->IP...不清楚,把这段代码放上去就好了,主题会陆续修改这个问题,当然肯定是有开关的,如果开启了CDN想要真实的IP地址就开启吧,否则可以忽略了。

    7K10

    Nginx网站使用CDN之后禁止用户真实IP访问的方法

    二、火眼金睛 如果长期关注张戈博客的朋友,应该还记得之前转载过一篇分享 Nginx 在 CDN 加速之后,获取用户真实 IP 做并发访问限制的方法。...说明 Nginx 还是可以实实在在的拿到用户真实 IP 地址的,那么事情就好办了。...要拿到用户真实 IP,只要在 Nginx 的 http 模块内加入如下配置: #获取用户真实IP,并赋值给变量$clientRealIP map $http_x_forwarded_for $clientRealIp...可以看到经过好多层代理之后, 用户的真实 IP 在第一个位置, 后面会跟一串中间代理服务器的 IP 地址,从这里取到用户真实的 IP 地址,针对这个 IP 地址做限制就可以了。...而自动化限制的方案可以参考博客之前的分享: Nginx 在 CDN 加速之后,获取用户真实 IP 做并发访问限制的方法 好了,本文分享到此,希望对你有所帮助。

    5.8K120

    nginx获取客户端请求的真实IP

    7 次查看 客户端通过nginx代理访问后端tomcat服务器时,后端服务器收到的请求信息中只有nginx代理的IP信息,无法看到client的真实IP, 所以nginx需要获取客户端请求头的真实IP地址进行传递...proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } 但是如上配置涉及jetty/tomcat/apache服务之后,客户端访问代理无法正常访问到服务...,页面异常,去除proxy_set_header等配置则访问正常。...于是修改配置如下,代理服务访问正常,且nginx能获取客户端请求的真实IP地址: location / { proxy_pass https://192.168.10.3:443/; proxy_set_header...Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $

    4.9K10

    获取客户端真实 IP 地址的最佳实践

    原因是新的实现没有兼容 1.6 版本,导致升级框架后获取不到客户端的真实 IP,1.7.7 才解决该问题。四、三大原则分析完整个事情的来龙去脉,想必读者们对现状有一定的了解。...代理必须向下传递客户端 IP 地址原因:从入口流量开始,经过 N 层代理,如果代理中间不传递客户端的 IP 地址,底层业务必然获取不到客户端的真实 IP 地址。2....统一使用 nginx 的 realip 模块获取客户端 IP 地址# nginx.conf# ...set_real_ip_from 腾讯云/阿里云 NAT 出口网段;set_real_ip_from...模块重写后的 $remote_addr 变量,业务就可以取到真实的客户端 IP 地址,无需考虑 PHP、Go 等不同语言、同种语言不同框架下的差异。...;理解好三大原则,获取客户端真实 IP 的问题,就跟喝水一样简单!

    99650

    z-blog网站cdn加速后获取用户真实IP地址的方法

    前几天发过一篇关于PHP获取网站使用cdn后的用户真实的IP地址的方法,然后就有群里的小伙件单独来问,如果使用z-blog建站并使用cdn加速的话是如何获取用户的真实IP地址呢?...z-blog cdn加速后获取用户真实IP地址的方法 z-blog需要获取用户IP地址的地方大概有两处,一个后台建立新用户时需要获取当前管理的IP地址,另一个是访客在前台提前评论时,需要获取访客的IP地址...打开 zb_system/function/c_system_event.php 找到如果下图两处,分别是提交用户资料时获取用户IP地址以及提交评论时获取IP地址的代码 提交用户资料获取IP地址 提交评论获取...IP地址 可以比较一下,上面两张图所要获取IP地址方式都是调用的同一个函数 GetGuestIP() ,我们只需要在z-blog中改动这个函数的代码就可以获取z-blog在cdn加速的情况下用户真实的IP...,如下图所示 小编用话说: 1、z-blog默认后台是无法显示评论的IP地址的,你可以使用一些相关的评论插件来查看评论的IP地址 2、z-blog默认后台的用户管理也无法查看用户的注册地址,你也可以使用用户中心一类的插件来查看

    1.9K10

    Nginx在CDN加速之后,获取用户真实IP做并发访问限制的方法

    开启CDN之后,我之前写的Shell防护脚本也就宣告无效了,因为不管是正常访问还是攻击访问,脚本拿到的IP都是CDN节点的,而我不可能把CDN的节点IP也给禁用了,那就都不能访问了(其实已经犯过错了,导致天津...那么,如果我要对单IP做访问限制,绝大多数教程都是这样写的: ## 用户的 IP 地址 $binary_remote_addr 作为 Key,每个 IP 地址最多有 50 个并发连接 ## 你想开...因为普通配置中基于【源IP的限制】的结果就是,我们把【CDN节点】或者【阿里云盾】给限制了,因为这里“源IP”地址不再是真实用户的IP,而是中间CDN节点的IP地址。...可以看到经过好多层代理之后, 用户的真实IP 在第一个位置, 后面会跟一串中间代理服务器的IP地址,从这里取到用户真实的IP地址,针对这个 IP 地址做限制就可以了。...那么针对CDN模式下的访问限制配置就应该这样写: ## 这里取得原始用户的IP地址 map $http_x_forwarded_for $clientRealIp { "" $remote_addr

    3.9K30

    nginx反向代理后应用程序如何获取客户端真实IP?

    nginx反向代理后应用程序如何获取客户端真实IP?...Nginx反向代理后,Servlet应用通过request.getRemoteAddr()取到的IP是Nginx的IP地址,并非客户端真实IP,通过request.getRequestURL()获取的域名...、协议、端口都是Nginx访问Web应用时的域名、协议、端口,而非客户端浏览器地址栏上的真实域名、协议、端口。...Nginx的反向代理实际上是客户端和真实的应用服务器之间的一个桥梁,客户端(一般是浏览器)访问Nginx服务器,Nginx再去访问Web应用服务器。...X-Forwarded-For这个Header和X-Real-IP类似,但它在多层代理时会包含真实客户端及中间每个代理服务器的IP。 配置到这一步后,还不能彻底解决问题。

    2.6K10

    nginx反向代理获取客户端的真实IP和域名

    nginx反向代理后,在应用中取得的ip都是反向代理服务器的ip,取得的域名也是反向代理配置的url的域名,解决该问题,需要在nginx反向代理配置中添加一些配置信息,目的将客户端的真实ip和域名传递到应用程序中...话不多说直接贴出Nginx实例代码: upstream这个模块提供一个简单方法来实现在轮询和客户端IP之间的后端服务器负荷平衡。...; proxy_set_header HTTP_X_FORWARDED_FOR $remote_addr;#在多级代理的情况下,记录每次代理之前的客户端真实ip proxy_set_header X-Forwarded-Proto...php中取得客户端真实IP: /** * 获取客户端ip */ function getClientIP() { $ip = "unknown"; /* * 访问时用localhost访问的,读出来的是...* ::1说明开启了ipv6支持,这是ipv6下的本地回环地址的表示。 * 使用ip地址访问或者关闭ipv6支持都可以不显示这个。

    7.6K00
    领券