FrV*_*aBe 22 apache mod-rewrite redirect web-applications mod-proxy
我在Servlet容器(端口8080)上运行WebApplication,该环境可以从Internet(外部)和公司内部(内部)访问,例如
http://external.foo.bar/MyApplication
http://internal.foo.bar/MyApplication
Run Code Online (Sandbox Code Playgroud)
使用带有mod_proxy的apache http服务器将incomming(外部/内部)请求重定向到servlet容器.配置如下所示:
ProxyPass /MyApplication http://localhost:8080/MyApplication retry=1 acquire=3000 timeout=600 Keepalive=On
ProxyPassReverse /MyApplication http://localhost:8080/MyApplication
Run Code Online (Sandbox Code Playgroud)
我现在面临的问题是某些MyApplication响应依赖于原始请求URL.具体:将为WSDL文档提供具有元素的schemaLocation="<RequestUrl>?xsd=MyApplication.xsd"元素.
使用我当前的配置,它总是看起来像
<xs:import namespace="..." schemaLocation="http://localhost:8080/MyApplication?xsd=MyApplication.xsd"/>
Run Code Online (Sandbox Code Playgroud)
但它应该是
External Request: <xs:import namespace="..." schemaLocation="http://external.foo.bar/MyApplication?xsd=MyApplication.xsd"/>
Internal Request: <xs:import namespace="..." schemaLocation="http://internal.foo.bar/MyApplication?xsd=MyApplication.xsd"/>
Run Code Online (Sandbox Code Playgroud)
我想这是一个常见的要求.但由于我不是apache http服务器及其模块配置的专家,如果有人可以提供一些(详细的)帮助,我会很高兴.
提前致谢!
如果要保留原始主机名和代理主机名,可以使用另一种方法.
如果您ProxyPreserveHost在Apache配置中使用mod_proxy disable .对于大多数代理服务器,包括mod_proxy,请读取X-Forwarded-Host应用程序中的标头.这标识了HTTP请求提供的原始主机头.
您可以在此处阅读有关标头mod_proxy(以及可能的其他标准代理服务器)的信息:
http://httpd.apache.org/docs/2.2/mod/mod_proxy.html
| 归档时间: |
|
| 查看次数: |
43906 次 |
| 最近记录: |