首页 > 其他 > 详细

IHS代理遇到404的问题

时间:2021-04-14 10:21:19      阅读:10      评论:0      收藏:0      [点我收藏+]

因为工作的原因最近使用IBM Http server (IHS)做代理服务器。IHS和Apache相似度很高,有不明白的地方可以查看Apache的相关文档做参考资料。(这里不得不吐槽一下IHS相关资料真的好少!)

 

我们的程序访问流程是如下图。我们有一台提供服务的服务器A,IHS作为A的代理服务器接受所有客户端的访问,然后再将访问转给服务器A。服务器A返回信息,IHS将对于的信息返回给客户端。IHS的作用就是左手交右手的操作而已。

技术分享图片

 

 

但配置好以下代理的设置后,使用Client发出请求得到404的错误。

SSLProxyEngine on

ProxyPreserveHost on

ProxyPass  /xxx/xxx  https://Server A/xxxx/xxxx 

ProxyPassReverse  /xxx/xxx  https://Server A/xxxx/xxxx 

 

可以确认Service A运行正常,因为使用Postman是可以直接访问Server A提供的API服务获取相关的信息。经过多次实验和翻查资料后,最终定位到ProxyPreserveHost这个设置。应该将ProxyPreserveHost设置为off!!!

以下是Apache官网配置手册的原话(建议使用英文去理解,中文翻译我看得一头雾水。)

技术分享图片

 

当IHS作为Service A的代理,ProxyPreserveHost设置为“on”,IHS会将client请求报头(Request header)中Host的值直接放到IHS请求Server A请求报头的Host中。如下图所示:

技术分享图片

 

由于request header中的Host是用来指示使用服务器A那个服务的,服务器A中根本没有IHS的服务,所以只能返回404了。

 

如果ProxyPreserveHost设置为“off”,IHS会使用ProxyPass设置中的hostname值放到请求Server A请求报文头的Host中。如下图所示:

技术分享图片Host设置了正确的Server A地址,Server A才会正确返回数据。

 

参考Apache官网手册地址:http://httpd.apache.org/docs/current/mod/mod_proxy.html#proxypreservehost

 

IHS代理遇到404的问题

原文:https://www.cnblogs.com/MatrixBlogs/p/14655984.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!