带有 Apache 服务器 SSL 的 php 中的 Websocket

Posted

技术标签:

【中文标题】带有 Apache 服务器 SSL 的 php 中的 Websocket【英文标题】:Websocket in php with Apache Server SSL 【发布时间】:2015-12-22 18:14:26 【问题描述】:

我正在寻找在运行 php 的 Apache web 服务器中配置 websocket,使用 Devristo phpws 库来运行 websocket worker。

当我在服务器中运行 php 文件时,它给了我这个字符串:

Resource id #442015-12-22T16:41:16+00:00 NOTICE (5): phpws listening on ssl://172.31.29.79:12345

在前端,基于 AngularJS,我尝试建立连接:

var dataStream = $websocket('wss://subdomain.domain.com');

Google Chrome 浏览器的控制台给了我这个错误:

WebSocket connection to 'wss://subdomain.domain.com/' failed: Error during WebSocket handshake: Unexpected response code: 200

我有一个 EC2 AWS 实例,我在其中托管了我的源代码,并为 AWS Route 53 配置了一个记录集,该记录集通过子域指向实例的公共 IP。

我不知道如何正确配置反向代理以允许通信。

我尝试使用反向代理设置 Apache 服务器,但我认为我没有以正确的方式配置它。

这是配置。 我在站点可用调用 websocket-ssl.conf 中创建了一个文件,并使用此配置链接到启用站点:

<VirtualHost *:80>
 ServerName subdomain.domain.com

 ProxyPass / ssl://172.31.29.79:12345/
 ProxyPassReverse / ssl://172.31.29.79:12345/
</VirtualHost>

有人可以帮助我吗?如果您想了解其他信息,请询问我:)

非常感谢

【问题讨论】:

请发布您的 apache 配置,显示您尝试设置反向代理。另外,你看过 apache 错误日志吗? 当然,我已经在主要问题中编辑了我的 conf。谢谢 【参考方案1】:

我用这个配置解决了。

在 AWS Route 53 中设置 CNAME 调用 subdomain.domain.com 的记录 指向我的 ELB dns 名称; 在 ELB 监听器中打开 12345 端口;

在前端我建立了连接:

var dataStream = $websocket('wss://subdomain.domain.com:12345');

就是这样

【讨论】:

以上是关于带有 Apache 服务器 SSL 的 php 中的 Websocket的主要内容,如果未能解决你的问题,请参考以下文章

怎么搭建php环境Apache+PHP+mysql

带有 mod-proxy 和 SSL 的 Apache VirtualHost

带有 mod24_ssl 的 Apache httpd24 不会从 http 重定向到 https

在腾讯云服务器centos7.5系统中lamp(centos7.5+apache+mysql+php)环境中安装ssl证书

在 apache 中使用带有 ssl 的单声道

mod_proxy,mod_ssl,带有 SSLProxyEngine 到内部 F5...内部 F5 向 apache 发送 TCP RESET