我尝试配置Apache,以便充当我在Tomcat服务器上部署的VAADIN(版本7.3.6)应用程序的代理。
配置似乎最初工作得很好。我可以登录并使用该应用程序。但是,在应用程序中点击几下后,VAADIN会发出通知: "无法从服务器读取UIDL。检查servlet映射。错误代码:403"。
出现此消息后我尝试重新加载页面(在浏览器中点击F5)我再也无法访问webapp,导致403错误。当我等待几秒钟并重新加载整个页面时(F5),我可以再次访问webapp。成功登录后点击几下就会一次又一次地导致相同的情况。
当出现错误时,在Apache错误日志中找到以下行:
(仍然在应用程序中): [错误]客户端被服务器配置拒绝:proxy:http:// 172.16.1.107:8080/UIDL/,referrer:https://www.mydomain.ch/
(点击F5后,页面被完全拒绝): [错误]客户端被服务器配置拒绝:代理:http:// 172.16.1.107:8080 /
Apache配置如下:(该站点应该仅作为HTTPS提供)
<VirtualHost *:80>
ServerName www.mydomain.ch
HostnameLookups Off
UseCanonicalName Off
ProxyRequests Off
Redirect /VAADIN/ https://www.mydomain.ch/VAADIN/
Redirect /UIDL/ https://www.mydomain.ch/UIDL/
Redirect / https://www.mydomain.ch/
</VirtualHost>
<VirtualHost _default_:443>
SSLEngine on
SSLProxyEngine on
SSLCertificateFile ...
SSLCertificateKeyFile ...
SSLProtocol all -SSLv2
SSLHonorCipherOrder On
SSLCipherSuite ...
SetEnv no-gzip
ServerName www.mydomain.ch
ProxyRequests Off
ProxyPass /VAADIN/ http://172.16.1.107:8080/VAADIN/
ProxyPass /UIDL/ http://172.16.1.107:8080/UIDL/
ProxyPass / http://172.16.1.107:8080/
ProxyPreserveHost on
ProxyPassReverseCookiePath / /
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
</VirtualHost>