django-channel настройки nginx - PullRequest
       13

django-channel настройки nginx

0 голосов
/ 25 сентября 2019

Мое приложение django использует django-каналы.Я смог настроить Django для запуска с использованием Gunicorn и Nginx.Приложение запускается, если я использую python manage.py runserver и redis-server отправляет уведомления и т. Д., Но я не могу настроить его с помощью nginx.

 server {
    listen 80;
    server_name IP;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /home/amir/clientcode;
    }

    location / {
        include proxy_params;
        proxy_pass http://unix:/home/amir/clientcode/adminpanel.sock;
    }
}

Однако, когда я пытаюсь настроить его для django-каналов, он дает мне статус 502

upstream channels-backend {
    server localhost:8000;
}

server {
    listen 80;
    server_name IP;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /home/amir/clientcode;
    }

    location / {
        try_files $uri @proxy_to_app;
        include proxy_params;
        proxy_pass http://unix:/home/amir/clientcode/adminpanel.sock;
    }

    location @proxy_to_app {
        proxy_pass http://channels-backend;

        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Host $server_name;
    }
}

Мой файл asgi.py

import os
import django
from channels.routing import get_default_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "adminpanel.settings")
django.setup()
application = get_default_application()
``

1 Ответ

0 голосов
/ 25 сентября 2019

Прежде всего, установите Daphne в вашем приложении: здесь я использую daphne == 1.3.0

Чтобы запустить сервер Daphne, я использую эту команду:

export DJANGO_SETTINGS_MODULE="config.settings"
exec daphne -b 0.0.0.0 --proxy-headers config.asgi:channel_layer

Помимо Daphne,Вы должны начать работника:

python manage.py runworker

С этим вы можете использовать сокеты в проектах одного и того же URL.

Посмотрите в этой статье: https://medium.com/labcodes/introduction-to-django-channels-d1047e56f218

Привет

...