JSessionID在Apache Web服务器上不是永久性的

wljmcqd8  于 2022-12-19  发布在  Apache
关注(0)|答案(2)|浏览(191)

下面是我的httpd.conf配置。2我有一个tomcat服务器作为后端服务器,我使用apachewebserver作为我的tomcat服务器的代理。
下面的配置对于所有不需要会话的网页都能正常工作。
当进一步调查时,我发现JSESSIONID在每个Web请求上都在变化,这意味着当请求和响应通过Apache http服务器时,该ID不会持久化。
请注意,当我尝试将tomcat服务器直接暴露给web时,JSESSIONID是持久的,并且按预期工作。然而,出于安全要求,我们需要将tomcat服务器仅用作后端内部服务器。
所以我不知道为什么apache http服务器不喜欢正确处理jsesionid。请求您的帮助,并指导我在我的配置中缺少什么。

注意:我们不需要任何负载平衡器设置,因此目前不考虑mod_proxy_balancer模块。

<VirtualHost *:443>
ServerName www.external.com
ProxyRequests Off
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>
         AddOutputFilterByType SUBSTITUTE text/html
    ProxyPreserveHost off
    ProxyPass / http://localhost:8080/internal/
    ProxyPassReverse / http://localhost:8080/internal/    
    Substitute "s|http://localhost:8080/internal|https://www.external.com|i"                
    SSLProtocol all
    SSLEngine on     
    SSLCertificateFile C:/keys/site/external_cert.cer       
    SSLCertificateKeyFile C:/keys/site/www_internal_private.p12.pri.pem
    SSLCertificateChainFile C:/keys/site/Intermediate_CA.cer
</VirtualHost>

Apache Web服务器为Apache 2.4,Tomcat引擎为Tomcat 8.5

js5cn81o

js5cn81o1#

serverfault answer之后添加Set-Cookie标题:
最后,我只需要在VirtualHost配置中添加以下代码行,将所有cookie路径从/WEBAPP_NAME更改为/(root):

Header edit Set-Cookie "^(.*; Path=)/WEBAPP_NAME/?(.*)" $1/$2
cnwbcb6i

cnwbcb6i2#

在web.xml中设置cookie的硬路径就足够了:

<session-config>
    <cookie-config>
      <path>/</path>
    </cookie-config>
  </session-config>

相关问题