错误:从上游读取响应头时上游过早关闭连接[uWSGI/Django/NGINX]

abi*_*son 23 mysql django nginx amazon-ec2 uwsgi

我目前总是在我的用户正在进行的查询中获得502 ...通常返回872行并在MySQL中运行2.07.然而,它返回了大量信息.(每行包含很多东西).有任何想法吗?

运行Django(tastypie Rest API),Nginx和uWSGI堆栈.

使用NGINX进行服务器配置

# the upstream component nginx needs to connect to
upstream django {
    server unix:///srv/www/poka/app/poka/nginx/poka.sock; # for a file socket
}

# configuration of the server
server {
    # the port your site will be served on
    listen  443;


    # the domain name it will serve for
    server_name xxxx; # substitute your machine's IP address or FQDN
    charset     utf-8;

    # max upload size
    client_max_body_size 750M;   # adjust to taste

    # Finally, send all non-media requests to the Django server.
    location / {
        uwsgi_pass  django;
        include     /srv/www/poka/app/poka/nginx/uwsgi_params; # the uwsgi_params file you installed
    }
}
Run Code Online (Sandbox Code Playgroud)

UWSGI配置

# process-related settings
# master
master          = true
# maximum number of worker processes
processes   = 2
# the socket (use the full path to be safe
socket          = /srv/www/poka/app/poka/nginx/poka.sock
# ... with appropriate permissions - may be needed
chmod-socket    = 666
# clear environment on exit
vacuum          = true

pidfile = /tmp/project-master.pid # create a pidfile
harakiri = 120 # respawn processes taking more than 20 seconds
max-requests = 5000 # respawn processes after serving 5000 requests
daemonize = /var/log/uwsgi/poka.log # background the process & log
log-maxsize = 10000000
#http://uwsgi-docs.readthedocs.org/en/latest/Options.html#post-buffering
post-buffering=1
logto = /var/log/uwsgi/poka.log # background the process & log
Run Code Online (Sandbox Code Playgroud)

Dan*_*ack 12

这不太可能是nginx配置问题.

几乎可以肯定,后端实际上是崩溃(或者只是终止连接),而不是给出错误的响应.即错误消息告诉你问题是什么,但你正在寻找错误的地方来解决它.

你没有提供足够的信息来让我们知道究竟是什么问题,但如果我不得不猜测:

它通常返回872行,并在MySQL中运行2.07.然而,它返回了大量信息.

它要么在某个地方超时,要么耗尽内存.

  • 不,您应该找到导致后端终止请求的原因. (4认同)

ema*_*tta 6

我有同样的问题,为我修复的是在settings.py中添加我的域名, 例如:

ALLOWED_HOSTS = ['.mydomain.com', '127.0.0.1', 'localhost']
Run Code Online (Sandbox Code Playgroud)

同样的问题,我的意思是我甚至无法加载页面,nginx将返回502而不提供任何可能导致应用程序崩溃的页面.

并且nginx日志包含:

Error: upstream prematurely closed connection while reading response header from upstream
Run Code Online (Sandbox Code Playgroud)