把apache和jettty(jboss/tomcat)通讯从mod_jk方式调整为mod_proxy方式后,应该获取IP方式要修改。
来源:互联网 发布:淘宝客服的专业术语 编辑:程序博客网 时间:2024/04/27 17:07
原来直接用request.getRemoteAddr();获取ip,可以到真实的ip,但是修改成mod_proxy方式后,request.getRemoteAddr();是发起求apache服务器的ip,大多数情况是本机。
所以应该修改为:
String ip = request.getHeader("x-forwarded-for");
if (ip != null && !"unknown".equalsIgnoreCase(ip)) {
String[] ipList = ip.split(",");
for (String ipItem : ipList) {
//ip min length 7: 0.0.0.0
if (ipItem.length() >= 7 && !"unknown".equalsIgnoreCase(ipItem)) {
return ipItem;
}
}
}
return null;//一定是配置有问题了。
至于网上流传的Proxy-Client-IP,还有八辈子用不到的WEBLogic自定义头WL-Proxy-Client-IP等等都是浮动,半点不可靠,请求端可以在头域中任意添加。
而只有这个XFF是apache获取到客端ip然后转发给后端,这两端的转发对我们而言是真实可信的。如果你启动了mod_proxy,那么在后端的
web容器中获取XFF就一定是在apache中看到的ip(指连接到apache的客户端,它有可能本身就是代理,但这称们平时直接getRemoteAddr()是
一致的),对于apache反向代理而言,它一定不会是unknown,上面的unknown是为了兼容squid的 forwarded_for off场景。如果这样取不到,那么根本没有
必要再取getRemoteAddr()还不如直接return null或return "127.0.0.1".
千万要注意的是,按IETF的XFF规范,对于原来的XFF应该保留,代理把当前获取的IP附加到最后面。如果我们取XFF的第一个非unknown就有可能是客户端
提交的值,从而被客端欺骗了,所以应该在apache中把原来的值给unset掉:
RequestHeader unset x-forwarded-for
这样apache会把原来的x-forwarded-for清这,然后把当前客户端的值作为x-forwarded-for转发给后端。
- 把apache和jettty(jboss/tomcat)通讯从mod_jk方式调整为mod_proxy方式后,应该获取IP方式要修改。
- Apache和Tomcat组合方式:mod_proxy
- mod_jk方式apache+tomcat负载均衡
- apache tomcat 实现集群负载均衡 mod_proxy 方式
- Apache mod_jk方式使用ajp13均衡集群整合Tomcat后的ssl配置
- apache多SSL证书虚拟主机使用mod_jk方式代理tomcat
- Apache配置反向代理、负载均衡和集群(mod_proxy方式)
- Apache配置反向代理、负载均衡和集群(mod_proxy方式)
- Apache配置反向代理、负载均衡和集群(mod_proxy方式)
- Apache配置反向代理、负载均衡和集群(mod_proxy方式)
- 如何整合Apache和Tomcat (两种方式1.Apache自带的proxy 2.mod_jk 1.21(mod_jk-apache-2.2.4.so))
- JBoss和Tomcat部署方式的区别
- Apache负载均衡之Apache proxy和Apache+mod_jk方式
- Apache HTTP Server 与 Tomcat 的三种连接方式介绍mod_jk等
- Apache配置反向代理、负载均衡和集群(mod_proxy方式) 经典
- mod_proxy方式Tomcat负载均衡原理详解及配置
- mod_proxy和mod_jk比较
- 实例详解tomcat组件安装+Nginx反向代理tomcat+Apache使用mod_jk和mod_proxy反向代理和负载均衡
- A Macro Defined Ring Buffer(C Language)
- 电子技术课程设计报告
- ArcGIS for Android示例解析之标绘-----DrawGraphicElements
- 开发的郁闷,360浏览器页面自动提交两次,servlet也难逃摧残
- 智能车笔记4 内部中断(时钟中断)
- 把apache和jettty(jboss/tomcat)通讯从mod_jk方式调整为mod_proxy方式后,应该获取IP方式要修改。
- myeclipse如何生成ant需要的build.xml
- JS禁止页面输入或粘贴特殊字符
- 关于AdventureWorks2008
- 排序 堆排序 快排序 插入排序 选择排序
- CArchive使用的一种错误方式
- S3C2440串口通讯实现
- Objective-C 内存管理
- wp7超大文本显示控件 垂直滚动