zoukankan      html  css  js  c++  java
  • django+uwsgi+nginx: websock 报502/400

    耽搁了近2个月,终于解决了,主要是nginx/uwsgi/django相关的配置:

    一、django工程settings.py,添加 

    WEBSOCKET_FACTORY_CLASS = "dwebsocket.backends.uwsgi.factory.uWsgiWebSocketFactory"

    参考:https://www.cnblogs.com/Xjng/p/4853080.html

    二、nginx配置

    location / {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:8088;
        uwsgi_send_timeout 600;        # 指定向uWSGI传送请求的超时时间,完成握手后向uWSGI传送请求的超时时间。
        uwsgi_connect_timeout 600;   # 指定连接到后端uWSGI的超时时间。
        uwsgi_read_timeout 600;
        ##### 支持websocket
        proxy_redirect off;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
    }

    三、uwsgi.ini 

    [uwsgi]
    # 配置服务器的监听ip和端口,让uWSGI作为nginx的支持服务器的话,设置socke就行;如果要让uWSGI作为单独的web-server,用http
    #http = 127.0.0.1:8088
    socket = 127.0.0.1:8088
    # 配置项目目录(此处设置为项目的根目录)
    chdir = /srv/qa-platform/back-server
    # 配置入口模块 (django的入口函数的模块,即setting同级目录下的wsgi.py)
    wsgi-file = back-server/wsgi.py
    # 开启master, 将会多开一个管理进程, 管理其他服务进程
    master = True
    # 服务器开启的进程数量
    processes = 2
    # 以守护进程方式提供服, 输出信息将会打印到log中
    daemonize = /srv/qa-platform/back-server/logs/wsgi.log
    # 日志切割,需要启动的时候加上 --log-reopen
    touch-logreopen = /srv/qa-platform/back-server/logs/touchfile
    # 服务器进程开启的线程数量 
    threads = 4
    # 退出的时候清空环境变量
    vacuum = true
    # 进程pid
    pidfile = uwsgi.pid

    四、启动:uwsgi --ini uwsgi.ini --http-websockets  --log-reopen

    =============2020/08/17 补充==========

    问题:后端无法获取前端send的数据

    根源:uwsgi配置不正确,修正如下

    #threads = 4
    async=30
    #异步数
    ugreen=''
    #这个必须,否则无法拿到前端传过来的数据
  • 相关阅读:
    mysql 数据库字符集问题
    适配器模式
    thinkphp学习笔记
    StarDict
    dereferencing pointer to incomplete type
    转载的一篇 关于git的
    策略模式
    让你的Ubuntu看的更顺眼些
    vim 配置
    .NET WEB SERVICE 学习记录
  • 原文地址:https://www.cnblogs.com/dannyyao/p/11824561.html
Copyright © 2011-2022 走看看