用Apache代理请求到Tornado - 502错误
我们正在尝试弄清楚为什么在请求时会出现 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