在 nginx 上部署 django 频道

Posted

技术标签:

【中文标题】在 nginx 上部署 django 频道【英文标题】:deploy django channels on nginx 【发布时间】:2019-02-01 00:42:49 【问题描述】:

我对 nginx 以及如何配置它来运行频道一无所知。我的环境是django 2.xubuntu 16nginxdaphneredisdigitalocean我已经修改了我的nginx配置文件一个星期,现在无法让我的套接字连接。

nginx config

server 
  listen 80;
  server_name x.x.x.x;

  location = /favicon.ico  access_log off; log_not_found off; 

  location /static/ 
    alias /home/admin1/myproject/channels-examples/multichat/static/ ;
  

  location / 
    include proxy_params;
    proxy_pass http://unix:/home/admin1/myproject/channels-examples/multichat/multichat.sock
  

我将非常感谢任何帮助。

【问题讨论】:

【参考方案1】:

您需要通过daphne 运行您的应用程序(您可以在此处阅读更多内容:https://channels.readthedocs.io/en/latest/deploying.html)并为 websockets 连接配置相关的 nginx 部分:

location / 
    proxy_pass http://127.0.0.1:8000;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "Upgrade";
  

【讨论】:

你知道为什么我去 143.x.x.x:8000 静态文件不通过吗?【参考方案2】:

我在非托管 VPS 上遇到了类似问题。

查看这个repository,这是我在发现什么对我有用时创建的。

您的静态位置:

location /static/ 
    alias /home/admin1/myproject/channels-examples/multichat/static/ ;

应该是这样的:

location /static 
    alias /home/admin1/myproject/channels-examples/multichat;

【讨论】:

以上是关于在 nginx 上部署 django 频道的主要内容,如果未能解决你的问题,请参考以下文章

Django 频道 daphne 返回 200 状态码

如何在 AWS Elastic Beanstalk 上部署 django 频道 2.x?

Django 频道和 uWSGI

开始使用 Django 频道时遇到问题

Django Channels Nginx 制作

在 Django 频道上找不到路径