会话在 apache2 ProxyPass 后面的 tomcat8 上过期
Session Expired on tomcat8 behind apache2 ProxyPass
对于使用 VAADIN 7.3.8 编写的名为 whys 的 Web 应用程序,我在 apache 后面部署了一个 tomcat8 服务器(并将 app.whys.fr 重定向到 whys.fr:8080/Whys这是我的应用程序位置)。
当我继续 http://whys.fr:8080/Whys, everything looks good, but when i go on 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 功能)
问题出在 vaadin 的推送上。
启用推送后,您还需要通过代理重定向 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>
对于使用 VAADIN 7.3.8 编写的名为 whys 的 Web 应用程序,我在 apache 后面部署了一个 tomcat8 服务器(并将 app.whys.fr 重定向到 whys.fr:8080/Whys这是我的应用程序位置)。
当我继续 http://whys.fr:8080/Whys, everything looks good, but when i go on 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 功能)
问题出在 vaadin 的推送上。
启用推送后,您还需要通过代理重定向 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>