gpt4 book ai didi

apache - Apache中反向代理的无限超时

转载 作者:行者123 更新时间:2023-12-04 04:35:19 31 4
gpt4 key购买 nike

我正在 Apache 后面跑 Tornado 。我已经创建了代理服务器。

ProxyRequests On
ProxyPass /chat/ http://localhost:8888/chat/

这段代码很好用,并将我所有的请求传递给 Tornado ,并将响应返回给客户端。

现在,我正在使用 Tornado 进行长时间轮询。在短时间内完成的某些请求说,此反向代理不到1分钟就可以正常工作。但是某些长轮询请求会产生502代理错误。此代理错误的原因是Apache可以将长轮询请求保留一分钟(默认情况下)。它关闭了请求,因此接收到代理错误。

现在,我将指令修改为
ProxyRequests On
ProxyPass /chat/ http://localhost:8888/chat/ timeout=12000

即我将默认超时更改为12000秒。

目前,这对我来说还不错。但是,这不是解决该问题的最佳方法。理想情况下,较长的轮询请求可以超过指定的任何超时。所以我的问题是
  • 如何使超时无限?即该请求永远不会被Apache关闭。
  • 还请评论:通过将Apache作为代理服务器,是否会降低 Tornado 的性能?
  • 最佳答案

    我在Nginx上遇到了类似的问题,并以与您相同的方式解决了它。但是我将超时更改为1天,因为在我的情况下该超时足够大。

    我认为您无法消除这一点。这样做的理由是,Apache(或与此有关的任何代理服务器)必须保持其性能,如果必须保持陈旧或不事件的连接,则显然不能保持其性能。您宁愿让您的代理服务器代理更多的事件连接而不是不事件的连接。

    因此,无法在Apache甚至Nginx(使用proxy_read_timeout配置)中关闭ProxyTimeout。因此,如果您的代理服务器未在超时时间内发送任何响应,则说明您的应用程序服务器响应时间太长,或者您的应用程序服务器出了点问题,或者客户端未请求任何响应。在第一种情况下,您可以进行安全估计以设置适当的超时。在第二种情况下,您需要修复您的应用程序服务器。在第三种情况下,您必须妥善处理客户端的情况,并在需要时重新连接。

    谈到第二个问题,除了Apache和Tornado服务器之间的延迟之外,应该没有其他区别。您可以很好地将Tornado服务器直接暴露给全世界,但这会带来一些挑战:
    1.更多操作-确保 Tornado 进程始终启动并运行。
    2.代理和负载平衡将变得更加困难。
    3.编写该代码而不是成千上万的专业贡献者,因此安全性更差。因此,您不应该考虑将每个服务器都以root用户身份运行。但是您仍然可以安全地对Apache或Nginx进行相同的操作。

    当然上述问题是可以解决的,但是为什么要解决已经解决的问题。 :)

    关于apache - Apache中反向代理的无限超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16962292/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com