使用apache web服务器代理apache tomcat

时间:2015-08-28 17:06:50

标签: apache tomcat proxy websocket stomp

根据apaches文档,在2.4中添加了wstunnel,我应该可以路由流量。

我有以下设置

Apache tomcat在8081和8444上运行。

有静态文件(html / js)以及从Tomcat提供的groovy / grails(war)文件

我已代理8081 <- 808444 <- 443

意思是我可以转到http://domain/app,看看除了http://domain:8081/app之外我还有什么要看。 [这工作得很好]

但是,在静态javascript / html页面中,有一个使用websocket连接回tomcat的连接。我的应用尝试连接回名为inf的应用,但此操作失败。

此代理/连接失败。

我在日志中看到httpd(apache)无法找到/inf/stomp/getInfo的正确协议,后者是后端websocket的url

我试图遵循this posts

中提及的this post笔记和正确排序

的httpd.conf

Listen 443
ServerName mydomain
<VirtualHost *:443>

<Proxy *>
      Order deny,allow
      Allow from all
</Proxy>

SSLEngine On
SSLProxyEngine On
SSLCertificateFile /etc/httpd/ssl/ssl.crt
SSLCertificateKeyFile /etc/httpd/ssl/ssl.key
RequestHeader set Front-End-Https "On"
SSLProxyEngine on
SSLProxyVerify none 
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
LogLevel debug


ProxyPass /mainView https://mydomain:8443/mainView
ProxyPassReverse /mainView https://mydomain:8443/mainView

ProxyPass /cas https://mydomain:8443/cas
ProxyPassReverse /cas https://mydomain:8443/cas

# <not working as it should>
ProxyPass /inf/ ws://mydomain:8081/inf/
ProxyPassReverse /inf/ ws://mydomain:8081/inf/
# </not working as it should>

ProxyPass /inf/ wss://mydomain:8444/inf/
ProxyPassReverse /inf/ wss://mydomain:8444/inf/



ProxyPass /inf-app https://mydomain:8444/
ProxyPassReverse /inf-app  https://mydomain:8444/
</VirtualHost>

1 个答案:

答案 0 :(得分:0)

您是否意识到您有两个: ProxyPass / inf / 块,如果您同时拥有安全且不安全的虚拟主机,则需要移动 ws:版本到端口80虚拟主机。还有一个重复的 SSLProxyEngine

至于解决问题,请参阅:tunneling secure websocket connections with apache,特别是: - enable-proxy_wstunnel = shared text