0

我们已经建立了一个带有 Flash 前端的 Apache/PHP 站点。我们将开始需要实现某种套接字通信或“长轮询”,以将更新推送到 Flash 应用程序。由于这对于 Apache 或 PHP 来说显然不是一个好情况,所以我想在这方面的功能上使用 Tornado,但我也不想在另一个端口上运行 Tornado,因为 Flash 应用程序将在客户端机器上运行,我们不想处理阻止套接字连接的限制性防火墙。

理想情况下,我想运行一个代理,它可以将大多数请求转发给 Apache,并将其他请求转发给 Tornado。我看到了一些使用 Apache 作为第一联系代理的建议,在必要时将请求转发到 Tornado,但我也看到这降低了 Tornado 的许多异步功能。

我想,为什么不使用 Tornado 作为 80 端口的第一个联系人并将其代理回 Apache?我根本找不到任何东西,我想知道这是否可能?

另一种选择是使用 lighttpd 之类的东西作为代理,让它决定是将东西传递给 Apache 还是 Tornado,但是这种设置有意义吗?或者 Nginx 呢?

对我对事物的理解的任何建议、建议或更正将不胜感激!

4

1 回答 1

0

这称为反向代理,很容易配置 nginx 来执行此操作。(lighttpd 应该也能很好地完成这项工作,但我没有使用它的经验)。

tornado 文档有一个示例 nginx 配置

使用反向代理时要注意的一件事是,与上游服务器的连接现在将来自代理,而不是客户端。事实上的标准是将有关原始请求的信息放在某些 http 标头中。在 tornado 文档的示例中,X-Real-IP标头设置为原始客户端的 IP,X-Scheme设置为原始请求的方案(例如 http/https)。

这可能需要对您的上游服务器进行一些修改。对于龙卷风,这是通过将 xheaders 参数设置为 True来构造HTTPServer来完成的。这将指示服务器尝试从 X-headers 中提取 IP 地址和方案。请注意,如果您将其与不在设置适当标头的反向代理后面的服务器一起使用,则您可能会受到 IP 地址欺骗。

于 2012-06-04T14:33:56.387 回答