ProxyPass重定向到同一路径

时间:2018-09-09 12:36:04

标签: apache mod-rewrite wildfly reverse-proxy proxypass

我有两个管理控制台wildlfy,我想通过反向代理访问它们两个。为此,我在httpd反向代理中进行了此配置:

<VirtualHost X.X.X.X:80>
ServerName reverse.com

ProxyPreserveHost On
RewriteEngine On

<Proxy balancer://wildfly-1>
BalancerMember http://wildfly-1.com route=wildfly-1 disablereuse=On keepalive=On retry=20
ProxySet lbmethod=bybusyness
</Proxy>

RewriteRule ^/wildfly-1-console/?$ / [R]
ProxyPass / balancer://wildfly-1/ stickysession=JSESSIONID nofailover=Off
ProxyPassReverse / balancer://wildfly-1/

<Proxy balancer://wildfly-2>
BalancerMember http://wildfly-2.com route=wildfly-2 disablereuse=On keepalive=On retry=20
ProxySet lbmethod=bybusyness
</proxy>

RewriteRule ^/wildfly-2-console/?$  / [R]
ProxyPass / balancer://wildfly-2/ stickysession=JSESSIONID nofailover=Off
ProxyPassReverse / balancer://wildfly-2/

</VirtualHost>

我的问题是,当我输入http://X.X.X.X:80/wildlfy1或2时,重写器可以正常工作并重定向到管理控制台,但仅适用于第一个控制台。我认为问题出在我的重写器上,它重定向到相同的路径“ /”,所以我的反向忽略第二个重定向。我该如何解决?

谢谢。

1 个答案:

答案 0 :(得分:0)

这是长话还是评论。这就是我的意思:

<VirtualHost X.X.X.X:80>
    ServerName reverse.com

    ProxyPreserveHost On
    RewriteEngine On

    ProxyPass        /wildfly-1-console http://wildfly-1.com
    ProxyPassReverse /wildfly-1-console http://wildfly-1.com

    ProxyPass        /wildfly-2-console http://wildfly-2.com
    ProxyPassReverse /wildfly-2-console http://wildfly-2.com
</VirtualHost>

这样,通过链接将heach URL提供给另一个站点。 请注意,这远非完整的配置,仅仅是为了展示概念。我也无法测试它,因为我现在无法访问Apache。

对于粘性会话,您要将均衡器概念应用于单个成员,因此没有任何作用。粘性cookie是为了确保您将为每个请求返回相同的实例。这是您要求第一,您获得第一。如果您要求第二名,您将获得第二名。您不可能要求/wildfly-1-console并被“代理”到http://wildfly-2.com

现在,如果您想在http://wildfly-1.comhttp://wildfly-2.com前面有一个单独的URL进行代理,则这是另一个问题(您需要做一些研究:-)