当前位置: 首页 > news >正文

中国政府网站建设与应用/360网站关键词排名优化

中国政府网站建设与应用,360网站关键词排名优化,毕业设计做网站可以用模版吗,怎样制作微信网站为什么80%的码农都做不了架构师?>>> 最近在实施apache2.2mod_proxyjetty7.2.0时遇到的一个诡异的问题 现象: 直接访问应用(A)能正常显示页面;但是通过应用(B)再代理访问A&#xf…

为什么80%的码农都做不了架构师?>>>   hot3.png

最近在实施apache2.2+mod_proxy+jetty7.2.0时遇到的一个诡异的问题

 

现象:

直接访问应用(A)能正常显示页面;但是通过应用(B)再代理访问A,则页面显示出错。

A的域名benni82.a.com
===============
B的域名www.b.comapache rewrite配置如下:
RewriteRule ^/proxy/(.*)$ $1 [P,L]

用户通过访问  http://www.b.com/proxy/http://benni82.a.com 来访问应用A,就显示错误页面。

而用户直接访问  http://benni.a.com 正常显示页面。


A应用的逻辑上依赖request.getServerName()

 

分析:

当通过mod_proxy代理访问时,http请求头会带上一些额外的信息

X-Forwarded-For:  10.20.156.2, 10.20.156.3  
X-Forwarded-Host: www.b.com, benni82.a.com
X-Forwarded-Server: www.b.com, www.a.com

X-Forwarded-For的内容从左到右依次是,用户的ip,第一个代理ip

X-Forwarded-Host依次是,第一次代理时请求头的Host值,第二次代理时请求头的Host值

X-Forwarded-Server依次是:第一个代理的ServerName,第二个代理的ServerName(取自apache ServerName指令的设值)

    而为了解决获取客户端原始ip地址,我们开启了jetty的forwarded功能。
开启该功能后,jetty在解析请求头时会优先使用X-Forwarded的内容。

  1. 会拿X-Forwarded-For最左边的ip地址(10.20.156.2)作为客户端原始ip,设置request.remoteAddr
  2. 会拿X-Forwarded-Host的最左边的值(www.b.com),设置request.serverName,
  3. 如果X-Forwarded-Host没有内容,会拿X-Forwarded-Server的最左边的值(crm.cn.alibaba-inc.com),设置request.serverName。

所以最后应用获取的ServerName时第一次代理时的Host,即www.b.com,页面返回错误。

 

        而直接访问http://benni82.a.com时,
相应的值如下:
X-Forwarded-Host:  benni82.a.com
X-Forwarded-Server:  www.a.com
最后应用获取的serverName是benni82.a.com,和请求头的host一致,页面能正常返回。

 

 

解决方案:

connector配置中添加两行

<Call name="addConnector"><Arg><New class="org.eclipse.jetty.server.nio.SelectChannelConnector"><Set name="port"><Property name="jetty.port" default="7001"/></Set><Set name="forwarded">true</Set><Set name="forwardedServerHeader">ignore</Set><Set name="forwardedHostHeader">ignore</Set><Set name="maxIdleTime">600000</Set></New></Arg>
</Call>

forwardedServerHeader默认是: X-Forwarded-Server
forwardedHostHeader默认值: X-Forwarded-Host
目的阻止jetty用 X-Forwarded-Host或 X-Forwarded-Server的内容复写ServerName .

 

 

protected void checkForwardedHeaders(EndPoint endpoint, Request request) throws IOException{HttpFields httpFields = request.getConnection().getRequestFields();// Retrieving headers from the requestString forwardedHost = getLeftMostValue(httpFields.getStringField(getForwardedHostHeader()));String forwardedServer = getLeftMostValue(httpFields.getStringField(getForwardedServerHeader()));String forwardedFor = getLeftMostValue(httpFields.getStringField(getForwardedForHeader()));String forwardedProto = getLeftMostValue(httpFields.getStringField(getForwardedProtoHeader()));if (_hostHeader != null){// Update host headerhttpFields.put(HttpHeaders.HOST_BUFFER,_hostHeader);request.setServerName(null);request.setServerPort(-1);request.getServerName();}else if (forwardedHost != null){// Update host headerhttpFields.put(HttpHeaders.HOST_BUFFER,forwardedHost);request.setServerName(null);request.setServerPort(-1);request.getServerName();}else if (forwardedServer != null){// Use provided server namerequest.setServerName(forwardedServer);}if (forwardedFor != null){request.setRemoteAddr(forwardedFor);InetAddress inetAddress = null;if (_useDNS){try{inetAddress = InetAddress.getByName(forwardedFor);}catch (UnknownHostException e){Log.ignore(e);}}request.setRemoteHost(inetAddress == null?forwardedFor:inetAddress.getHostName());}if (forwardedProto != null){request.setScheme(forwardedProto);}}
 

 

转载于:https://my.oschina.net/boltwu/blog/533743

http://www.lbrq.cn/news/1034299.html

相关文章:

  • 务川县住房和城乡建设局网站/百度云官网首页
  • 网站htm建设/seo实战教程
  • 微店网页版登录入口/seo网站优化工具大全
  • wordpress demo data/汕头自动seo
  • 中国纪检监察网站奶奶做女工/网站优化外包找谁
  • 恶搞网站怎么做/网站怎么收录
  • 新密网站/软文营销的案例
  • 东海县建设局网站/成都seo达人
  • 东营建设信息网站/谷歌seo服务
  • 微信公众号建设公司/安卓优化大师官网下载
  • 全响应式网站用什么做的/搜索引擎营销的主要模式有哪些
  • 吉林省住房和城乡建设厅网站6/外链怎么打开
  • 网站出现风险如何处理/seo双标题软件
  • 做网站怎样做才有百度快照/app开发流程
  • 网页设计旅游网站前言/快速学电脑培训班
  • 网站空间价格/郑州网站建设最便宜
  • 网站推广怎么做引流/市场监督管理局
  • 网站qq启动链接怎么做/南京疫情最新消息
  • 江门市智企互联网站建设/国际重大新闻
  • 池州网站建设哪家好/百度上的广告多少钱一个月
  • 电脑公司网站设计/宁波优化网站排名软件
  • 网站开发 总结报告/掉发脱发严重是什么原因
  • 企业网站建设要求/保定seo博客
  • WordPress访问者ip/郑州有没有厉害的seo
  • 建设网站英文/深圳全网推广托管
  • 网站建设 时间安排/阿里巴巴友情链接怎么设置
  • 做网站推广优化/怎么去做推广
  • seo关键词优化排名外包/西安seo优化公司
  • 义乌web开发/网络推广seo公司
  • 北京响应式网站/山东搜索引擎优化
  • 图论理论部分
  • OBOO鸥柏丨智能会议平板教学查询一体机交互式触摸终端招标投标核心标底参数要求
  • R语言机器学习算法实战系列(二十七)LASSO 与 Adaptive LASSO 在特征选择中的比较与应用
  • 数据备份与进程管理
  • 计算机视觉(CV)——图像相关基本概念
  • 深入理解 Gin 框架的路由机制:从基础使用到核心原理