【问题标题】:Socket RPC with Tornado in an established Apache/PHP environment在已建立的 Apache/PHP 环境中使用 Tornado 进行套接字 RPC
【发布时间】:2012-06-08 01:47:23
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: apache nginx lighttpd tornado long-polling


    【解决方案1】:

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

    龙卷风文档有一个example nginx configuration

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-16
      • 1970-01-01
      • 1970-01-01
      • 2014-01-15
      • 2011-02-22
      • 2017-07-02
      • 2011-07-18
      • 2012-10-20
      相关资源
      最近更新 更多