如何在Apache 2.4.18和tomcat7上设置websocket?

时间:2016-01-08 05:56:00

标签: apache websocket apache2 tomcat7 mod-cluster

目前,我已经成功安装了包含mod_proxy_wstunnel的apache2.4.18,并在另一台机器上安装了tomcat7。我已经在tomcat7上部署了大气样本应用程序。然后我可以访问http://tomcatserver.com:8080/ademo/index.html

我抓住了下面的浏览器。 enter image description here

此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,并访问以下网址。 http://apachehttpdserver.com/ademo/index.html

我捕获了下面的浏览器快照,我发现不支持websocket。 enter image description here

所以我想知道如何修改 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:没有协议处理程序对URL有效/ademo/socket.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

1 个答案:

答案 0 :(得分:0)

我想回答我自己的问题。

我使用的httpd是从支持websocket的源代码2.4.18编译的。我发现编译过程正常,没有任何异常。我使用的redhat是Red Hat Enterprise Linux Server 5.9版(Tikanga)。

我猜这是因为错误消息'没有协议处理程序有效'。我尝试在yum安装的情况下切换到redhat 7.1。我执行了'yum install httpd',它将自动安装httpd 2.4.5。我发现httpd和tomcat的websocket连接都没问题。

但是目前我想在redhat 5.x上解决这个问题,因为将来我们会使用低版本的redhat。通常,由于编译过程是好的,二进制文件也应该可以吗?