会话在apache2 ProxyPass后面的tomcat8上过期

时间:2015-02-14 19:20:42

标签: apache session tomcat vaadin7 tomcat8

对于一个名为whys用VAADIN 7.3.8编写的web应用程序,我在一个apache之后部署了一个tomcat8服务器(并将app.whys.fr重定向到whys.fr:8080/Whys,这是我的应用程序位置)。

当我继续http://whys.fr:8080/Whys时,一切看起来都不错,但是当我继续http://app.whys.fr时,我立即收到会话过期消息,并且没有日志告诉我原因(catalina.out中没有任何内容)

您可以自己测试以查看差异;)。

这是我的代理配置:

<VirtualHost *:80>
  ServerName app.whys.fr
  ProxyRequests On
  ProxyPass / http://localhost:8080/Whys/
  ProxyPassReverse / http://localhost:8080/Whys/
        <Proxy *>
                Order deny,allow
                Allow from all
        </Proxy>
</VirtualHost>

<VirtualHost *:80>
  ServerName whys.fr
</VirtualHost>

和我在server.xml中的tomcat连接器:

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

apache2启用了mod_proxy,mod_proxy_http和mod_proxy_connect,web.xml中的会话超时为30分钟。

编辑:忘了提及:我的应用程序正在使用@Push(vaadin功能)

1 个答案:

答案 0 :(得分:2)

问题在于vaadin的Push。

启用推送后,您还需要通过代理重定向cookie,以使会话保持活动状态,否则会立即失效。

所以这里是如何处理apache2代理后面的vaadin推送应用程序:

<VirtualHost *:80>
  ServerName yourdomain.tld
  ProxyRequests On
  ProxyPass / http://localhost:8080/yourApplication/
  ProxyPassReverse / http://localhost:8080/yourApplication/
  ProxyPassReverseCookiePath /yourApplication /
        <Proxy *>
                Order deny,allow
                Allow from all
        </Proxy>
</VirtualHost>