我在我的烧瓶上创建了一个端点,它从数据库查询(远程db)生成一个电子表格,然后在浏览器中作为下载发送它。烧瓶不会抛出任何错误。乌斯吉不抱怨。
但是当我检查nginx的error.log时,我看到了很多
2014/12/10 05:06:24错误14084#0:*239436上游提前关闭连接,从上游读取响应头,客户端: 34.34.34.34,服务器: me.com,请求:"GET /download/export.csv HTTP/1.1",上游:"uwsgi://0.0.0.0:5002",主机:"me.com",引用者:"https://me.com/download/export.csv“
我部署uwsgi就像
uwsgi --socket 0.0.0.0:5002 --buffer-size=32768 --module server --callab app
我的nginx配置:
server {
listen 80;
merge_slashes off;
server_name me.com www.me.cpm;
location / { try_files $uri @app; }
location @app {
include uwsgi_params;
uwsgi_pass 0.0.0.0:5002;
uwsgi_buffer_size 32k;
uwsgi_buffers 8 32k;
uwsgi_busy_buffers_size 32k;
}
}
server {
listen 443;
merge_slashes off;
server_name me.com www.me.com;
location / { try_files $uri @app; }
location @app {
include uwsgi_params;
uwsgi_pass 0.0.0.0:5002;
uwsgi_buffer_size 32k;
uwsgi_buffers 8 32k;
uwsgi_busy_buffers_size 32k;
}
}
这是nginx还是uwsgi的问题,还是两者兼而有之?
发布于 2015-01-22 12:32:50
将nginx.conf更改为包括
sendfile on;
client_max_body_size 20M;
keepalive_timeout 0;
有关完整的示例,请参见self答案uwsgi在amazon上的新贵。
发布于 2017-09-11 10:05:11
在我的例子中,问题是nginx发送带有uwsgi协议的请求,而uwsgi正在监听该端口上的http数据包。因此,要么我必须改变nginx连接到uwsgi的方式,要么更改uwsgi来使用uwsgi协议进行监听。
发布于 2017-09-07 09:07:38
我在ElasticBean秸秆单容器码头WSGI应用程序部署中也有相同的零星错误。在环境上游配置的EC2实例上,如下所示:
upstream docker {
server 172.17.0.3:8080;
keepalive 256;
}
对于默认的上游简单负载测试,如下所示:
siege -b -c 16 -t 60S -T 'application/json' 'http://host/foo POST {"foo": "bar"}'
...on、EC2的利用率为70%。其余的是在从上游读取响应头时上游过早关闭连接而引起的502个错误。
解决方案要么是从上游配置中删除keepalive
设置,要么更简单、更合理,即使用--http-keepalive
(自1.9起)使HTTP保持在uWSGI
的旁边。
https://stackoverflow.com/questions/27396248
复制相似问题