crazycabbage
V2EX  ›  Django

django+uwsgi+nginx 访问出错

  •  
  •   crazycabbage · May 13, 2016 · 5484 views
    This topic created in 3658 days ago, the information mentioned may be changed or developed.
    报错如下:
    2016/05/13 19:02:40 [error] 11057#0: *162 upstream prematurely closed connection while reading 
    response header from upstream, client: xxx.xxx.xxx.xxx, server: xxx.xxx.xxx.xxx, request: "GET 
    /poweredby.png HTTP/1.1", upstream: "uwsgi://127.0.0.1:8003", host: "xxx.xxx.xxx.xxx:8000", 
    referrer: "http://xxx.xxx.xxx.xxx:8000/"
    
    uwsgi 配置如下:
    [uwsgi]
    socket = 127.0.0.1:8003
    touch-reload=/myblog/reload
    
    processes = 2
    threads = 4
    vacuum = true
    
    nginx 配置如下:
     server {
            listen       8000;
            server_name  xxx.xxx.xxx.xxx;
            root         /usr/share/nginx/html;
            access_log /logs/access.log;
            error_log /logs/error.log;
    
            charset     utf-8;
    
            # Load configuration files for the default server block.
    
            location / {
                include  /etc/nginx/uwsgi_params;
                uwsgi_pass  127.0.0.1:8003;
                client_max_body_size 35m;
                uwsgi_param UWSGI_SCRIPT myblog.wsgi;
                uwsgi_param UWSGI_CHDIR /myblog;
            }
            location /media  {
                alias /path/to/project/media;
            }
    
            location /static {
                alias /path/to/project/static;
            }
    
            error_page 404 /404.html;
                location = /40x.html {
            }
    
            error_page 500 502 503 504 /50x.html;
                location = /50x.html {
            }
        }
    
    views.py 文件内容
    #coding:utf-8
    from django.shortcuts import render
    from django.http import HttpResponse
    
    # Create your views here.
    def index(request):
        return HttpResponse(u"Hello World!!")
    

    搞了一天了,死活连不上, uwsgi8003 端口正常访问, nginx 代理 8000 端口连不上,端口已经开放,防火墙已经关闭,求解,感激不尽!

    13 replies    2016-05-15 01:01:32 +08:00
    peter999
        1
    peter999  
       May 13, 2016
    selinux
    peter999
        2
    peter999  
       May 13, 2016
    nginx 监听的 ip 是不是写成本地了,保险的话写成 0.0.0.0
    pc10201
        3
    pc10201  
       May 13, 2016
    先直接用 uwsgi 跑 django 试一下,没有问题再与 nginx 一起开
    crazycabbage
        4
    crazycabbage  
    OP
       May 13, 2016
    @peter999 写的是 0.0.0.0
    crazycabbage
        5
    crazycabbage  
    OP
       May 13, 2016
    @pc10201 uwsgi 跑是能成功的,端口是 8003 , nginx 端口是 8000
    peter999
        6
    peter999  
       May 13, 2016
    配置个静态目录看能访问到吗,还有目录和文件权限问题
    peter999
        7
    peter999  
       May 13, 2016
    如果你有路由器又是通过外网 ip 访问,还要检查下路由器上端口是不是被别的机器占用了
    crazycabbage
        8
    crazycabbage  
    OP
       May 13, 2016
    @peter999 没有用路由器,端口换了也没用,根据错误日志是 upstream timed out (110: Connection timed out) while reading response header from upstream ,超时,谜一样
    zwzmzd
        9
    zwzmzd  
       May 14, 2016 via Android
    如果直接用 uwsgi 作前端,会有什么问题么?长期裸跑 uwsgi 的路过
    wizardoz
        10
    wizardoz  
       May 14, 2016
    你有没有搞错? 8003 端口正常访问?
    nginx 访问 uwsgi 用的是 wsgi 协议,浏览器访问 uwsgi 用的是 http 哦。
    wizardoz
        11
    wizardoz  
       May 14, 2016
    把配置文件中的
    socket = 127.0.0.1:8003
    改成
    uwsgi-socket = 127.0.0.1:8003
    试试

    或者手动起 uwsgi ,再用 nginx 反代过来试试。
    wizardoz
        12
    wizardoz  
       May 14, 2016
    然后再把
    uwsgi-socket = 127.0.0.1:8003
    改成
    uwsgi-socket = 0.0.0.0:8003
    试试
    crazycabbage
        13
    crazycabbage  
    OP
       May 15, 2016
    @wizardoz 谢谢了,已经解决了,估计是 uwsgi_param UWSGI_SCRIPT myblog.wsgi;uwsgi_param UWSGI_CHDIR /myblog;这个问题,我是用 supervisor 来管理的
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   971 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 52ms · UTC 20:01 · PVG 04:01 · LAX 13:01 · JFK 16:01
    ♥ Do have faith in what you're doing.