zoukankan      html  css  js  c++  java
  • IHS代理遇到404的问题

    因为工作的原因最近使用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

  • 相关阅读:
    502 IPO 上市
    501 Find Mode in Binary Search Tree
    500 Keyboard Row 键盘行
    498 Diagonal Traverse 对角线遍历
    Django_modelform组件
    Django_RBAC_demo2 升级版权限控制组件
    Django admin组件源码流程
    Django_rbac_demo 权限控制组件框架模型
    Django_重装系统后无法使用 sqlite 数据库报错:com.intellij.execution.ExecutionException: Exception in thread "main" java.lang.ClassNotFoundException: org.sqlite.JDBC
    python_面向对象小试题
  • 原文地址:https://www.cnblogs.com/MatrixBlogs/p/14655984.html
Copyright © 2011-2022 走看看