Apache 和 URL 重写为不同的名称

Apache 和 URL 重写为不同的名称

首先,我在 Windows 上运行我的罪行。

我有两个在两个不同端口上运行的同一 Web 应用程序的 tomcat 实例,我可以直接访问它们 http://localhost:7070/foo/http://localhost:8080/foo/

我希望能够访问以下 URL http://localhost/foo1/http://localhost/foo2/

如果我对某个站点进行了以下简单设置,那么一切就都很好,我可以做到http://localhost/foo/

ProxyRequests off
ProxyPreserveHost off
RewriteEngine On
<VirtualHost *:80> ]
  ProxyPass /foo/ http://localhost:7070/foo/ 
  ProxyPassReverse /foo/ http://localhost:7070/foo/
</VirtualHost>

对引用“foo1”的配置进行以下更改:

ProxyRequests off
ProxyPreserveHost off
RewriteEngine On
<VirtualHost *:80> ]
  ProxyPass /foo1/ http://localhost:7070/foo/ 
  ProxyPassReverse /foo1/ http://localhost:7070/foo/
</VirtualHost>

似乎发生了两件奇怪的事情:

  1. 然后我可以进入http://localhost/foo1/并登录 OK 并进入默认页面,但奇怪的是 sessionid 在 URL 中并且我无法进入 Web 应用程序中的其他页面。

  2. 当我查看 tomcat 管理器页面时,经过几次登录尝试后,我会看到大量活动会话,而不仅仅是每个用户一个。

如果我直接登录到 tomcat 网页,http://localhost:7070/foo/则没有可见的 sessionid,但一切仍然有效。

请问您对我的配置应该如何设置有什么想法吗?

答案1

查看 ProxyPassReverseCookieDomain 和 ProxyPassReverseCookiePath 指令http://httpd.apache.org/docs/2.4/mod/mod_proxy.html#proxypass
我敢打赌你的应用程序正在设置 cookie,并且由于你的配置中没有 cookie 重写,所以它只能在 url 中使用 jsessionid。

相关内容