use*_*709 9 python nginx flask uwsgi
我在我的烧瓶上创建了一个端点,它从数据库查询(远程数据库)生成一个电子表格,然后在浏览器中将其作为下载发送.Flask不会抛出任何错误.Uwsgi不抱怨.
但是当我检查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
Run Code Online (Sandbox Code Playgroud)
我的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;
}
}
Run Code Online (Sandbox Code Playgroud)
这是一个nginx或uwsgi问题,还是两者兼而有之?
Iva*_*gai 15
正如@mahdix 所提到的,该错误可能是由于 Nginx 使用 uwsgi 协议发送请求而 uwsgi 在该端口上侦听 http 数据包造成的。
在 Nginx 配置中,您有类似的内容:
upstream org_app {
server 10.0.9.79:9597;
}
location / {
include uwsgi_params;
uwsgi_pass org_app;
}
Run Code Online (Sandbox Code Playgroud)
Nginx 将使用 uwsgi 协议。但是如果uwsgi.ini你有类似的东西(或命令行中的等价物):
http-socket=:9597
Run Code Online (Sandbox Code Playgroud)
uwsgi会说http,出现问题中提到的错误。请参阅本机 HTTP 支持。
一个可能的解决方法是改为:
socket=:9597
Run Code Online (Sandbox Code Playgroud)
在这种情况下,Nginx 和 uwsgi 将使用 uwsgi 协议通过 TCP 连接相互通信。
旁注:如果 Nginx 和 uwsgi 在同一个节点中,Unix 套接字将比 TCP 快。请参阅使用 Unix 套接字而不是端口。
将nginx.conf更改为include
sendfile on;
client_max_body_size 20M;
keepalive_timeout 0;
Run Code Online (Sandbox Code Playgroud)
有关完整示例,请参阅amazon linux上的自我答案uwsgi upstart
就我而言,问题是 nginx 正在使用 uwsgi 协议发送请求,而 uwsgi 正在该端口上侦听 http 数据包。因此,要么我必须更改 nginx 连接到 uwsgi 的方式,要么更改 uwsgi 以使用 uwsgi 协议进行侦听。
| 归档时间: |
|
| 查看次数: |
22263 次 |
| 最近记录: |