0

目前,我已经成功安装了包含 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
4

1 回答 1

0

我想回答我自己的问题。

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

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

但目前我想解决 redhat 5.x 上的问题,因为将来我们将使用低版本的 redhat。一般来说,既然编译过程没问题,那么二进制文件也应该没问题吧?

于 2016-01-11T02:16:13.003 回答