`
- 浏览:
621574 次
- 性别:
- 来自:
上海
-
String ip = request.getHeader("X-Real-IP");
if (StringUtils.isBlank(ip) || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("X-Forwarded-For");
} else {
return ip;
}
if (StringUtils.isBlank(ip) || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
} else {
int index = ip.indexOf(',');
if (index != -1) {
ip = ip.substring(0, index);
}
}
return ip;
当只有一层nginx反向代理时,可以通过“HTTP_X_REAL_IP”取得client的真实IP。
如果有二层nginx反向代理,则client的真实IP被包含在“HTTP_X_FORWARDED_FOR”中。
最不可信的是“REMOTE_ADDR”,它的内容完全可以被client指定!总之只要编译和配置正确,“HTTP_X_FORWARDED_FOR”总是包含了client的真实IP。
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
要获取Nginx反向代理下的真实IP,主要涉及以下两个关键配置: 1. **$remote_addr 变量**:这是Nginx默认记录的客户端IP地址。在没有经过代理的情况下,$remote_addr会存储客户端的IP。但当Nginx作为反向代理时,它...
然而,在实际应用中,很多情况下用户的请求会经过反向代理服务器(如Nginx、Squid等),这使得直接使用`request.getRemoteAddr()`方法获取到的IP地址往往并不是客户端的真实IP地址。 #### 二、问题分析 当客户端...
解决该问题,需要在Nginx反向代理配置中添加一些配置信息,目的将客户端的真实IP和域名传递到应用程序中。同时,也要修改获取IP地址的方法。 但是需要注意的是,通过Nginx反向代理后,如果访问IP通过了几层代理,...
Nginx作为反向代理,可以隐藏真实服务器,提高网站的安全性和性能。 2. **配置反向代理**:在`nginx.conf`中添加一个新的server块,设置监听端口,并配置proxy_pass指令指向后端服务器。例如: ``` server { ...
在Windows环境下配置Nginx1.2.7进行反向代理,可以实现将用户的请求转发到其他服务器,从而隐藏真实服务器的IP和结构,提高系统的安全性和负载均衡能力。 首先,我们需要修改Nginx的配置文件。这个文件通常位于...
反向代理的基本原理是,客户端的请求先到达Nginx,然后由Nginx根据预设规则转发到后端的真实服务器。这样做的好处包括:隐藏真实服务器IP,提高安全性;通过缓存机制减轻后端压力;以及实现负载均衡,分散流量到多个...
需要注意的是,当通过多级反向代理时,`X-Forwarded-For`的值可能会包含多个IP地址,这些IP地址按照顺序排列,通常第一个非unknown的有效IP地址就是客户端的真实IP。 #### 三、获取真实IP的第二种方法 在某些情况...
在f5的开发论坛上找到的,按开发者的话说,是为了解决iis放在f5后记录不到用户ip的问题,管他前端是f5还是nginx还是squid还是haproxy,都可以用。装完之后重启下iis即可。https://devcentral.f5.com/weblogs/J
3. 保护了真实的 web 服务器,web 服务器对外不可见,外网只能看到反向代理服务器,而反向代理服务器上并没有真实数据,因此,保证了 web 服务器的资源安全; 4. 加速了对网站访问速度,减轻 web 服务器的负担,反向...
### Nginx配置负载均衡与反向代理知识点详解 #### 一、理解负载均衡与反向代理 在深入了解本文档中的具体配置之前,我们首先来了解一下负载均衡与反向代理的基本概念。 **负载均衡**是一种分布式系统设计的技术,...
Nginx反向代理springboot的jar包过程解析涉及多个知识点,其中主要包括springboot应用部署方式、Nginx反向代理的工作原理以及Nginx的配置方法等。 首先,springboot项目部署主要有两种方式:一种是将项目打包为war...
反向代理是Nginx的一个重要特性,它隐藏了后端服务器的真实地址,所有来自客户端的请求首先到达Nginx,然后由Nginx根据配置将请求转发给相应的后端服务器。这样可以实现负载均衡、安全保护、缓存等多种目的。配置中...
需要注意的是,当客户端通过Nginx等反向代理服务器连接到应用服务器时,此方法获取的将是反向代理服务器的IP地址而非客户端真实IP。 ### 处理多层代理的情况 在实际部署中,客户端的请求可能经过多层代理服务器...
- **反向代理**:Nginx作为反向代理服务器,它可以接收来自客户端的请求,然后将这些请求转发到后端服务器,隐藏了真实服务器的IP地址和端口,提高安全性并平衡负载。 - **负载均衡**:通过配置,Nginx可以将流量...
客户端访问服务器时,可能会经过Nginx、Apache等反向代理服务器或CDN服务(如Cloudflare),这些中间层会修改请求头中的IP信息,导致`$_SERVER['REMOTE_ADDR']`只能获取到最后一个代理服务器的IP地址,而非客户端的...
例如,`proxy_protocol`可以启用Nginx与上游服务器之间的代理协议,以便获取客户端的真实IP;`proxy_set_header`可以设置传递给后端服务器的头部信息。 总之,Nginx的TCP代理转发功能使得我们可以利用其强大的性能...
在PHP开发中,获取用户公网IP(真实IP地址)是一个常见的需求,这通常涉及到网络通信和服务器配置。当我们使用PHP内置的全局数组`$_SERVER`中的`'REMOTE_ADDR'`来获取用户IP时,有时会发现它返回的是内网IP而非公网...
#### 一、Nginx反向代理 **反向代理**是一种网络服务技术,其中客户端不会直接连接到目标服务器,而是通过一个代理服务器进行访问。这种模式下,代理服务器接收客户端请求后转发给后端服务器,并将后端服务器的响应...