`
newspringwork
  • 浏览: 101118 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Nginx获取真实IP

 
阅读更多

通过Nginx作为前端服务器转发后,获取到的并不是真实的IP,需要通过下面一段才能获得真实的IP

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

 然后Java中就可以通过X-Real-IP头来获取真实的IP了

public String getRealIp(HttpServletRequest request) {
		String ip = request.getHeader("X-Real-IP");
		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
			ip = request.getHeader("x-forwarded-for");
		}
		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
			ip = request.getRemoteAddr();
		}
		return ip;
	}

 

分享到:
评论

相关推荐

    使用slb后nginx、apache获取真实ip.docx

    使用 SLB 后 Nginx、Apache 获取真实 IP 在使用 SLB(Server Load Balancer)后,如何获取真实 IP 是一个常见的问题。SLB 的作用是将用户请求分发到多个服务器上,以提高网站的负载能力和可用性。但是,在 SLB 后,...

    CDN获取真实IP

    1. **配置Nginx获取真实IP** 在使用CDN的情况下,服务器接收到的客户端IP地址实际上是CDN节点的IP地址。可以通过特定的Nginx配置来获取客户端的真实IP地址: ```nginx http { proxy_set_header X-Real-IP $...

    获取客户端真实IP(支持代理服务器)

    然而,在实际应用中,很多情况下用户的请求会经过反向代理服务器(如Nginx、Squid等),这使得直接使用`request.getRemoteAddr()`方法获取到的IP地址往往并不是客户端的真实IP地址。 #### 二、问题分析 当客户端...

    java非常强的获取客户端真实IP的两种方法

    #### 二、获取真实IP的第一种方法 为了获取客户端的真实IP地址,可以利用HTTP头部中的`X-Forwarded-For`字段。当请求经过反向代理时,这个字段会包含原始客户端IP地址的信息。以下是一个简单的示例代码: ```java ...

    nginx扩展应用-获取真实IP.docx

    "nginx扩展应用-获取真实IP" 本文将详细介绍如何使用nginx扩展应用来获取访问者真实IP,主要是通过在七层上配置Apache服务器前端(负载均衡),将真实的IP放在X-Forwarded-For的字段里,然后在日志中记录真实IP地址...

    nginx经过多层代理后获取真实来源ip过程详解

    nginx取 $remote_addr 当做真实ip,而事实上,$http_X_Forwarded_For 才是用户真实ip,$remote_addr只是代理上一层的地址 解决方案: 在 http 模块 加 set_real_ip_from 172.17.10.125; #上一层代理IP地址 real_ip_...

    PHP不同环境下获取真实的IP.txt

    #### 一、理解获取真实IP的需求背景 在实际应用中,客户端访问服务器时,可能会经过Nginx、Apache等反向代理服务器或CDN服务(如Cloudflare),这些中间层会修改请求头中的IP信息,导致`$_SERVER['REMOTE_ADDR']`...

    nginx做反向代理时的真实IP_nginx反向代理_

    本文将深入探讨“Nginx做反向代理时如何获取真实IP”的主题,这对于网站日志分析、安全监控以及实现个性化服务至关重要。 Nginx是一款流行的开源HTTP服务器,常用于反向代理、负载均衡和缓存服务。反向代理是指...

    基于Nginx 反向代理获取真实IP的问题详解

    解决该问题,需要在Nginx反向代理配置中添加一些配置信息,目的将客户端的真实IP和域名传递到应用程序中。同时,也要修改获取IP地址的方法。 但是需要注意的是,通过Nginx反向代理后,如果访问IP通过了几层代理,...

    nginx配置tcp转发(nginx通过白名单访问)

    例如,`proxy_protocol`可以启用Nginx与上游服务器之间的代理协议,以便获取客户端的真实IP;`proxy_set_header`可以设置传递给后端服务器的头部信息。 总之,Nginx的TCP代理转发功能使得我们可以利用其强大的性能...

    java socket 用户真实IP测试

    在标题“java socket nginx tcp转发 用户真实IP测试”中,主要探讨的是如何在Java的Socket连接中,通过Nginx的TCP转发获取到实际用户的IP地址。 在描述中提到的博客文章,很可能是详细介绍了这个问题的解决方案。...

    详解在使用CDN加速时Nginx获取用户IP的配置方法

    以下是对CDN加速时Nginx获取用户IP的配置方法的详细解释: 1. **使用CDN自定义IP头** 如果你的CDN提供商支持,可以在CDN的配置中设置一个自定义头部(如`remote-user-ip`),并将用户的原始IP地址赋值给它。在...

    java获取用户真实ip

    需要注意的是,当客户端通过Nginx等反向代理服务器连接到应用服务器时,此方法获取的将是反向代理服务器的IP地址而非客户端真实IP。 ### 处理多层代理的情况 在实际部署中,客户端的请求可能经过多层代理服务器...

    让iis记录nginx反向代理的真实ip

    在f5的开发论坛上找到的,按开发者的话说,是为了解决iis放在f5后记录不到用户ip的问题,管他前端是f5还是nginx还是squid还是haproxy,都可以用。装完之后重启下iis即可。https://devcentral.f5.com/weblogs/J

    IP工具类,通过传入的request获取ip地址(JAVA)

    同样,如果在反向代理环境中,我们需要检查`X-Forwarded-For`头来获取真实的IP: ```java String forwardedFor = request.getHeaders().getFirst("X-Forwarded-For"); if (forwardedFor != null) { ipAddress = ...

    nginx负载均衡后如何记录来访者IP访客IP浏览者的IP

    然而,在这种配置下,记录来访者的真实IP(访客IP)可能会变得复杂,因为Nginx作为中间层会接收到请求,并将其转发到实际处理请求的Web服务器。这可能导致Web服务器只看到Nginx的IP而不是用户的IP。为了解决这个问题...

    PHP通过$_SERVER['REMOTE_ADDR']得到的是内网IP?如何才能获得客户的公网IP(真实IP地址).zip

    在PHP开发中,获取用户公网IP(真实IP地址)是一个常见的需求,这通常涉及到网络通信和服务器配置。当我们使用PHP内置的全局数组`$_SERVER`中的`'REMOTE_ADDR'`来获取用户IP时,有时会发现它返回的是内网IP而非公网...

    获取客户端IP地址所需Jar包

    然而,在某些情况下,如通过反向代理服务器(如Nginx、Apache)或负载均衡器访问时,这个方法可能返回的是代理服务器的IP而非客户端的真实IP。这时,我们需要检查X-Forwarded-For头部,该头部通常包含了客户端的IP...

    利用nginx如何匹配多个条件

    但是在微信上访问会出现ip不是真实ip的情况。真实ip出现在$http_x_forwarded_for里面。 处理方法 需求 这里需要匹配$remote_addr $http_x_forwarded_for这两项其中一个获取是内部ip即可访问。 配置nginx $remote_...

    idea,java获取ip地址

    当我们构建一个基于Servlet的Web应用程序时,有时需要获取访问用户的真实IP地址,这在处理用户请求、日志记录或者实现地理位置相关的功能时尤为关键。 Servlet是Java服务器端的一种组件,它扩展了Web服务器的功能,...

Global site tag (gtag.js) - Google Analytics