nginx代理tomcat的时候,tomcat获取的客户端不是客户端传过来的ip,出现这种情况的原因很明显,nginx作为代理服务器先拦截客户端发来的请求,它再以localhost的身份转发给tomcat去处理。解决办法在nginx配置中的location节点中加入以下:
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
java可以这样获取远程ip
public static String getIpAddr(HttpServletRequest request) {
String ip = request.getHeader("x-forwarded-for");
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("WL-Proxy-Client-IP");
}
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
return ip;
}
来自个人博客 :
http://www.rguess.com/blog/article/48.html 求关注
OK!
分享到:
相关推荐
# 获取真实IP proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 获取代理者的真实IP client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 90; proxy_send_time...
`http_realip_module`用于获取客户端的真实IP地址。 接下来,通过`make`和`make install`命令完成编译安装过程。 ##### Nginx配置文件详解 接着,我们来看一下具体的Nginx配置文件内容: ```nginx upstream ...
# 获取真实 IP # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 获取代理者的真实 IP client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 90; proxy_send_timeout...
# 获取真实IP #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 获取代理者的真实IP client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 90; proxy_send_time...
对于动态资源请求(如以.jsp结尾的请求),使用proxy_pass指令将请求转发到Tomcat服务器,并进行相应的头信息设置,以便Tomcat能够获取用户的真实IP地址等信息。 4. 设置客户端请求和连接的超时时间、代理服务器...
### Nginx配置负载均衡与反向代理知识点详解 #### 一、理解负载均衡与反向代理 在深入了解本文档中的具体配置之前,我们首先来了解一下负载均衡与反向代理的基本概念。 **负载均衡**是一种分布式系统设计的技术,...
其中Host头部信息会被设置为当前请求的域名,X-Real-IP和X-Forwarded-For则分别用于获取客户端的真实IP和经过代理的IP,这在Web应用需要获取用户真实IP时非常有用。 值得注意的是,在使用Nginx与Tomcat配置单IP多...
当我们构建一个基于Servlet的Web应用程序时,有时需要获取访问用户的真实IP地址,这在处理用户请求、日志记录或者实现地理位置相关的功能时尤为关键。 Servlet是Java服务器端的一种组件,它扩展了Web服务器的功能,...
然而,在某些情况下,如通过反向代理服务器(如Nginx、Apache)或负载均衡器访问时,这个方法可能返回的是代理服务器的IP而非客户端的真实IP。这时,我们需要检查X-Forwarded-For头部,该头部通常包含了客户端的IP...
Nginx反向代理springboot的jar包过程解析涉及多个知识点,其中主要包括springboot应用部署方式、Nginx反向代理的工作原理以及Nginx的配置方法等。 首先,springboot项目部署主要有两种方式:一种是将项目打包为war...
1. **反向代理**: Nginx作为反向代理服务器,可以将用户的请求转发到后端的应用服务器,如Apache或Tomcat,从而隐藏了真实的服务器集群,实现负载均衡,提高系统的可用性和响应速度。 2. **负载均衡**: Nginx可以...
通过对Nginx的学习和实践,不仅可以提升个人的技术能力,还能帮助企业构建更加稳定高效的网站系统。随着互联网技术的不断发展,Nginx的应用场景也将越来越广泛,掌握这些知识对于IT专业人士来说具有重要意义。
nginx 高级知识点总结 一、Location 匹配规则 * 精准匹配 > 普通匹配 > 正则匹配(非正则除外) * Location 指令用于定义URI的匹配规则 * 可以使用正则表达式来匹配URI 二、代理传参 * proxy_pass 指令用于将...
当Nginx前有CDN等代理层时,`$binary_remote_addr`会是CDN的IP,无法获取到真实客户端IP。这时可以通过`map`指令获取原始用户IP: ```nginx map $http_x_forwarded_for $clientRealIp { "" $remote_addr; ~^(?P[0...
# 设置真实IP proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 设置转发地址 client_max_body_size 10m; # 客户端最大请求体大小 client_body_buffer_size 128k; # 请求体缓冲区大小 proxy_...
34. **反向代理与正向代理**:反向代理隐藏真实服务器,正向代理隐藏客户端。 35. **Squid、Varnish、Nginx对比**:Squid主要用于缓存,Varnish专注静态内容加速,Nginx多功能,兼顾反向代理和负载均衡。 36. **...
书中会解释如何利用Apache作为反向代理,以及如何与其他服务器软件(如Nginx、Tomcat)协同工作,以实现复杂架构的部署。 总的来说,《Apache权威指南第三版》涵盖了Apache从基础到进阶的全面知识,无论你是新手...
红蓝对抗是一种模拟真实网络安全攻防的演练方式,旨在通过模拟攻击者(红队)与防守者(蓝队)的对抗,检验和提升组织的网络安全防御能力。Windows内网渗透涉及的领域广泛,主要包括信息收集、传输通道建立、权限...
- 获取真实的IP地址、操作系统类型和版本、开放端口列表、Web应用防火墙(WAF)等。 - 通过这些信息可以帮助我们更好地了解目标系统的整体环境,从而制定更有效的测试策略。 - **网站指纹识别** - CMS(内容管理...
【Server】文件管理列表不能正常加载二级以上的目录 【Server】添加监控判断用户是否配置报警联系方式 【Server】初始化安装不能自动登录 【Server】页面组件采用国际化采用 zh_cn 【Server】服务器中验证码无法加载...