12

在使用 ProxyPass 将端口 80 上的流量重定向到通过 Tomcat 托管的 Web 应用程序时,我在让 cookie 工作时遇到了一些问题。

我启用 cookie 的动机是摆脱附加到 URL 的“jsessionid=”参数。

我在 META-INF/ 的 context.xml 中为我的 Web 应用程序启用了 cookie。
当我通过http://url:8080/webapp访问 web 应用程序时,它按预期工作,jsessionid 参数在 URL 中不可见,而是存储在 cookie 中。

通过 apache2 虚拟主机访问我的网站时,cookie 似乎不起作用,因为现在将“jsessionid”附加到 URL。我该如何解决这个问题?

这是我的虚拟主机配置:

<虚拟主机 *:80>
        服务器名称 somedomain.no
        ServerAlias www.somedomain.no

        <代理 *>
                订单拒绝,允许
                允许所有人
        </代理>

        ProxyPreserveHost 关闭
        ProxyPass / http://localhost:8080/webapp/
        ProxyPassReverse / http://localhost:8080/webapp/

        错误日志 /var/log/apache2/somedomain.no.error.log
        CustomLog /var/log/apache2/somedomain.no.access.log 结合
</虚拟主机>

编辑:实际上正在设置 cookie。我猜问题是cookie包含“路径:/ webapp”。

4

2 回答 2

22

我想到了。

将此添加到 VHost 配置中:

ProxyPassReverseCookiePath /webapp /
于 2010-04-17T19:31:56.170 回答
0

感谢您的回答,我的完整工作配置如下所示:

<VirtualHost *:80>
    ServerName extener_url.xxx.co.zm
    ProxyRequests Off
    ProxyPass / http://localhost:8080/app/
    ProxyPassReverse / http://localhost:8080/app/
    ProxyPassReverseCookiePath /app /

    ServerAdmin webmaster@localhost
    <Proxy *>
            Order deny,allow
            Allow from all  
    </Proxy>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined 
</VirtualHost>
于 2020-06-21T12:42:40.163 回答