对于一个用VAADIN 7.3.8编写的名为whys的Web应用程序,我在一个Apache服务器后面部署了一个tomcat8服务器(并将app.whys.fr重定向到whys.fr:8080/Whys wich是我的应用程序位置)。
当我继续执行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:
<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功能)
最佳答案
问题出在vaadin的Push。
启用推送后,您也需要通过代理重定向cookie,以保持会话有效,否则会话立即失效。
所以这是如何处理apache2 proxy后面的vaadin push应用程序:
<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>