用Apache代理请求到Tornado - 502错误

4 投票
1 回答
1652 浏览
提问于 2025-04-17 16:18

我们正在尝试弄清楚为什么在请求时会出现 502 ProxyError 错误,特别是在我们的 Python 服务器上处理长时间运行的请求时。

我们的服务器使用的是 CentOS 操作系统,并且我们用 httpd 来代理网络请求,这些请求会被转发到一个运行着 WSGI REST 应用的 Tornado 服务器(这个服务器的端口是 8000)。

通常情况下,处理时间不超过一定时限的请求会成功,但如果请求超时,我们就会收到几个 502 ProxyError 错误,并且我们的服务器会变得无响应。我们在将应用部署到开发服务器时也遇到过这种情况,开发服务器同样是用 httpd 进行配置的。

我们的 httpd.conf 虚拟主机的配置如下:

<VirtualHost *:80>
    ServerName server_ip
    ServerAlias server
    ServerAdmin admin@server

            DocumentRoot /var/www/

            ErrorLog /var/www/log/error_log

            LogLevel debug

            # Reverse proxy
            ProxyRequests off
            ProxyPass /rest/ http://server_ip:8000/

            # Rewrites
            <Directory />
                            Order allow,deny
                            Allow from all

                            RewriteEngine On
                            #RewriteRule /rest/(.*) http://server_ip:8000/$1 [L,QSA]
            </Directory>
</VirtualHost>

我在服务器日志中也看到了这样的记录:

....[error] proxy: HTTP: disabled connection for (server_ip)

造成这种情况的原因可能是什么呢?我们是否应该使用其他的库或配置?

我不确定我提供的信息是否足够,如果还有其他有用的信息需要提供,请告诉我,我会尽快发布。非常感谢!

1 个回答

1

试试这个

ProxyPass /rest/ http:// server_ip:8000/ 连接超时=5秒 超时=30秒

你可以根据自己的需要调整这些时间设置。

更多信息可以查看 http://httpd.apache.org/docs/current/mod/mod_proxy.html

撰写回答