根据 stackoverflow 论坛成员的推荐,我在此论坛中提出以下问题,显然它更适合(我是这个论坛的新手)。
我到底想要什么:
我的网站的特定页面应该从 Web 服务器加载其内容(html 结构,代表聊天窗口),但其聊天功能(以服务器端的 PHP Ratchet 脚本形式存在(位于同一个 Web 服务器上))应该通过 WebSocket 连接工作。
换句话说,对于这个特定的页面,Web 服务器和 WebSocket 连接应该同时工作,而我只有一个 Apache (2.4) 服务器,基于共享主机,没有 root 访问权限。并且,如前所述,在 Ratchet 中编写的聊天应用程序和网站的 HTML 页面都存在于 Web 服务器上。
当我在本地主机上测试时,它运行得很好。然而,当我尝试将它部署到我的 Web 服务器上时,我遇到了麻烦,似乎需要在 Web 服务器前面使用 NGINX 反向代理,或者类似的东西(http://socketo.me/docs/deploy)。考虑到我的托管条件,是否可以部署,还是需要切换到其他托管类型?我从配置 NGINX 开始,但问题是我无法实际修改 Apache Web 服务器正在监听的端口,因为我没有 root 访问权限。我觉得我需要为此切换托管类型?
这个问题的一个方面可以总结为:当在共享托管的基础上拥有一个 Web 服务器且没有 root 访问权限时,是否可以在客户端和浏览器之间放置一个用于 Websocket 的反向代理?
答案1
大多数共享主机方案仅允许您接受端口 80(HTTP)和 443(HTTPS)上的连接,并且不允许您访问终端。
假设是这种情况,您无法运行 Ratchet WebSocket 服务器,因为它需要终端访问并且最好托管在非 HTTP 端口上。
我建议您在专用托管计划上运行 Web 服务器和 WebSocket 服务器,在那里您可以访问终端并能够使用您喜欢的任何端口。