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

Configure NGINX Reverse Proxy in front of Apache Web Server

所以我开始使用 Ratchet(在 PHP、http://socketo.me/docs/hello-world 中编程和使用 websocket 服务器的库)在我的网站上(在网络服务器本身上)编写聊天应用程序。

我在本地主机上进行了所有设置,一切正常。现在我想将它部署在我的网络服务器上,这是一个 Apache 服务器。为此,我显然需要在我的网络服务器前面配置一个反向代理,最好是使用 NGINX,因为 websocket 服务器不能简单地监听与我的 Apache 服务器相同的端口。

当搜索解释如何在我的 Apache Web 服务器前使用 NGINX 配置反向代理的资源时,搜索结果/文章/教程总是告诉我如何在 Apache WebServer ON [上使用 NGINX 配置反向代理] =56=]。我很困惑为什么 Ubuntu 总是在这里发挥作用;不使用 Ubuntu 就可以在我的 Apache Web 服务器前配置 NGINX 反向代理吗?

更新

我的服务器是基于共享主机的 Web 服务器,我没有根访问权限。那么,考虑到我什至无法更改我的网络服务器侦听的端口,是否真的有可能在我的网络服务器前面放置一个反向代理......?

可以更好地描述我想要的东西:我网站的特定页面应该从 Web 服务器加载其内容(html 结构,代表聊天 window),但是它的聊天功能在服务器端显示为 PHP Ratchet 脚本,应该通过 WebSocket 连接工作。换句话说,对于这个页面,Web 服务器和 WebSocket 连接应该同时工作,而我只有一个 Apache 服务器,在共享主机的基础上,没有根访问权限,在 Ratchet 中编程的聊天应用程序和网站的 HTML 页面存在(至少在我的本地主机上,这工作得很好)。考虑到我的托管条件,这甚至可以部署吗?还是我需要切换到另一种托管类型?

另外,请不要认为这个问题是针对 nginx 的。根据Ratchet中的文档,我的解决方案是:

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

  2. 运行 子域 (sock.example.com)

  3. 端口 80 上自己服务器上的 WebSocket 服务器
  4. 在您的网络服务器和 WebSocket 服务器前面放置一个反向代理(Nginx、HAProxy、Varnish)

我也想通了(github)

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

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

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

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


来自行“[...] 在我的网络服务器上,它是一个 Apache 服务器。”我猜您正在使用共同托管解决方案。在这种情况下,这在很大程度上取决于您使用的特定主机。在您的 CPannel 中尝试查找 "reverse proxy"/"proxy"/"socket"/"web socket" 参数。

如果您在 VPS 上托管并且您将 "family" 的 linux 分配为 ubuntu,请按照教程进行操作,它可能会正常工作。否则,查找特定于您的发行版的教程(如果您不在 linux 上,则查找 OS)。