部署django+nginx实现ws/wss的websocket生产环境通信

2780阅读 0评论2020-02-26 fengqiyunyong123
分类:Web开发

   本文阐述如何使用nginx部署基于django应用的websocket通信。之后会写django基于channels实现websocket的通信文章。
   简单介绍下:  websocket的主要协议ws/wss,类似于http/https的关系,如果使用了https那就必须使用wss协议。
    首先django应用启动ws服务,
    启动runworker      python manage.py runworker   具体实现处理的进程 ,可以理解为干活的   
    启动daphne          daphne -b 0.0.0.0 -p 8888 {应用名}.asgi:channel_layer    端口监听进程,理解为看门的。
    如果没报错,系统就启动了8888端口用来处理websocket请求

    nginx配置, 这里将https和wss请求放一个端口,使用后缀区分,这里展示一个https/wss的配置  
        

点击(此处)折叠或打开

  1. server {
  2.         listen 8010 ssl;
  3.         server_name api.test.com;
  4.         root /usr/share/nginx/html;
  5.         
  6.         ssl_certificate "api.test.com.pem";                #加入证书配置
  7.         ssl_certificate_key "api.test.com.key";
  8.         ssl_session_cache shared:SSL:1m;
  9.         ssl_session_timeout 10m;
  10.         ssl_ciphers HIGH:!aNULL:!MD5;
  11.         ssl_prefer_server_ciphers on;
  12.         
  13.         
  14.         location / {                           #django后端代理         
  15.                 include uwsgi_params;
  16.                 uwsgi_pass 127.0.0.1:8000;
  17.                 client_max_body_size 35m;
  18.         }

  19.         location /ws {                        #wss代理配置,主要设置http协议header支持websocket
  20.                 proxy_pass http://127.0.0.1:8888;
  21.                 proxy_http_version 1.1;
  22.                 proxy_set_header Upgrade $http_upgrade;
  23.                 proxy_set_header Connection "upgrade";
  24.         }        
  25.     }






        
        
        
        
上一篇:django+celery实现异步任务处理
下一篇:Vue组件之间通信