Sco*_*a P 16 apache mod-rewrite mod-proxy
我正在使用mod重写来掩盖我的应用程序的上下文根.例如,
RewriteRule ^/directory/(.*) balancer://appcluster/directory/$1 [P]
Run Code Online (Sandbox Code Playgroud)
appcluster看起来像这样:
<Proxy balancer://appcluster>
BalancerMember http://localhost:8080/App route=app_01 keepalive=On loadfactor=1 ttl=300 min=3 smax=5 max=15
ProxySet lbmethod=byrequests stickysession=JSESSIONID|jsessionid timeout=120 nofailover=On
</Proxy>
Run Code Online (Sandbox Code Playgroud)
我需要使用ProxyPassReverse吗?我曾经使用它,因为我的旧网络服务器代码看起来像这样:
ProxyPass /App balancer://appcluster lbmethod=byrequests stickysession=JSESSIONID|jsessionid timeout=120 nofailover=On
ProxyPassReverse /App http://localhost:9013/App
Run Code Online (Sandbox Code Playgroud)
Jon*_*Lin 50
所述ProxyPassReverse用于改变由该应用(appcluster)发送的报头到Apache,Apache的发送它的浏览器之前.例如,如果应用程序位于http:// localhost:9013 /,并且它尝试将浏览器重定向到,例如/new_location/,那么它将使用http:// localhost:9013/new_location /的重定向和位置标头进行响应,Apache将采取这个并将其发送到浏览器.问题是,浏览器(假设它在其他地方)然后尝试向http:// localhost:9013/new_location /发送请求,并收到错误.
ProxyPassReverse所做的是拦截这些标头,并重写它们,使它们与正在进行代理的Apache服务器相匹配.所以,如果我的Apache服务器托管http://myhost.com/,我有一个ProxyPass指向/到HTTP://本地主机:9013 /应用程序,如果应用程序坐在本地主机:9013返回重定向到访问http://本地主机: 9013/App/new_location /,我需要使用ProxyPassReverse它,以便在将请求发送回浏览器之前由Apache 重写为http://myhost.com/new_location/.
如果您没有发布重定向,那么这不会成为一个问题,但如果返回301/302重定向,那么将它放在那里并没有什么坏处.就mod_rewrite而言,RewriteRule适用于发往App的请求,而不适用于来自App的响应.所以它们是相互排斥的事件.
| 归档时间: |
|
| 查看次数: |
29918 次 |
| 最近记录: |