在Apache Web服务器之前配置NGINX反向代理

时间:2020-05-19 10:03:01

标签: apache ubuntu nginx websocket ratchet

因此,我开始使用Ratchet(在PHP http://socketo.me/docs/hello-world中使用库来编程和使用Websocket服务器)在我的网站上(在Web服务器本身上)编程聊天应用程序。

我将其全部设置在本地主机上,并且一切正常。现在,我想将其部署到我的Web服务器(即Apache服务器)上。为此,显然我需要在Web服务器前配置一个反向代理,最好使用NGINX,因为websocket服务器不能简单地侦听与Apache服务器相同的端口。

在寻找解释如何在我的Apache Web服务器之前使用NGINX配置反向代理的资源时,搜索结果/文章/教程总是告诉我如何在UBUNTU上的Apache WebServer上使用NGINX配置反向代理。我很困惑为什么Ubuntu总是在这里发挥作用。在不使用Ubuntu的情况下,是否可以在我的Apache Web服务器之前简单地配置NGINX反向代理?

更新

我的服务器是基于共享主机的Web服务器,并且我没有root访问权限。因此,即使我什至无法更改我的Web服务器侦听的端口,实际上甚至可以在我的Web服务器前放置一个反向代理。

以更好的方式描述我到底想要什么:我网站的特定页面应该从Web服务器加载其内容(html结构,表示聊天窗口),但是其聊天功能在PHP Ratchet脚本上显示服务器端,应该通过WebSocket连接工作。换句话说,对于此页面,Web Server和WebSocket连接应该同时工作,而我只有一个Apache服务器,基于共享主机,没有root访问权限,在Ratchet中编程的聊天应用程序和网站的HTML页面都在该Apache服务器上存在(至少在我的本地主机上,这非常好)。根据我的托管条件,是否有可能进行部署,还是我需要切换到其他托管类型?

此外,请不要认为此问题特定于nginx。根据Ratchet中的文档,我有以下解决方案:

  1. 使用WebSocket的端口8080在同一台计算机上运行网站和WebSocket服务器,并抓住客户端代理不会阻止流量的机会

  2. 在子域(sock.example.com)的端口80上的自己的服务器上运行WebSocket服务器

  3. 在您的Web服务器和WebSocket服务器之前放置一个反向代理(Nginx,HAProxy,Varnish)

我也想出了(github)

  1. 使用可用于Apache的mod_proxy_wstunnels扩展

我很高兴知道这四个或其他推荐的解决方案中的任何一个,即使其中不包括nginx。

1 个答案:

答案 0 :(得分:0)

在UPDATE部分之后: 我们假设您不能在托管解决方案本身内的托管解决方案前面放置反向代理。这似乎不太可能。

我最好的选择是在专用VPS上设置反向代理,并通过它来进行所有流量,但是这种设置比您可能需要的复杂得多。


从我的Web服务器上的“ [...]行,这是Apache服务器”开始。我猜您正在使用互助的托管解决方案。在这种情况下,它在很大程度上取决于您所使用的特定主机。在您的CPannel中,尝试查找“反向代理” /“代理” /“套接字” /“ Web套接字”参数。

如果您托管在VPS上,并且以“ ubuntu”的身份分发“家庭”的linux,请按照教程进行操作,它可能会起作用。否则,请查找特定于您的发行版(或OS(如果您不在Linux上))的教程。