目前,我已经成功安装了包含 mod_proxy_wstunnel 的 apache2.4.18 并在另一台机器上安装了 tomcat7。我已经在 tomcat7 上部署了大气示例应用程序。然后我可以访问http://tomcatserver.com:8080/ademo/index.html
此 index.html 是从https://github.com/Atmosphere/atmosphere-samples/blob/master/samples/chat/src/main/webapp/index.html检索到的。
然后我尝试在 apache 服务器中设置httpd.conf ,如下所示。我没有使用任何与 VirtualHost 相关的配置。我只是将以下两行附加到此 httpd.conf 文件的末尾。
ProxyPass /ademo/ http://tomcatserver.com:8080/ademo/
ProxyPassReverse /ademo/ http://tomcatserver.com:8080/ademo/
然后我重新启动httpd,并访问下面的url。 http://apachehttpdserver.com/ademo/index.html
我捕获了下面的浏览器快照,我可以发现不支持 websocket。
所以我想知道如何修改这个httpd.conf以支持 websocket?我已取消注释LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
实际上,我计划设置多个后端服务器,所以我使用以下配置,参考http://blog.arungupta.me/load-balance-websockets-apache-httpd-techtip48/。但我仍然收到错误[Fri Jan 08 02:55:50.840362 2016] [proxy:warn] [pid 18446:tid 46971298007360] [client 10.248.66.148:52033] AH01144: No protocol handler was valid for the URL /ademo/套接字.html。如果您使用的是 DSO 版本的 mod_proxy,请确保代理子模块包含在使用 LoadModule 的配置中。 我确定的一件事是我已经在 httpd.conf 中设置了必要的模块。
<Proxy balancer://mycluster>
# Define back-end servers:
# Server 1
BalancerMember ws://10.214.49.65:8080
# Server 2
BalancerMember ws://10.214.49.83:8080/
</Proxy>
ProxyPass /ademo balancer://mycluster/ademo
ProxyPassReverse /ademo balancer://mycluster/ademo