Развертывание каналов django на dcoker и использование nginx в качестве прокси-сервера

<

я могу соединиться с приложением другими маршрутами, но не могу соединиться через websocket

веб-сокет обслуживается в HTTPS://EXAMPLE.COM/WS/SOCK

это мой asgi.py

 application = ProtocolTypeRouter({
'http': django_asgi_app,
'websocket': AllowedHostsOriginValidator(
    AuthMiddlewareStack(
        URLRouter(websocket_urlpatterns)
    ))})

Dockerfile

FROM python:3.8
ENV PYTHONUNBUFFERED 1
WORKDIR /myproject
ADD . /myroject
RUN pip install -r /myprjoect/requirements.txt
EXPOSE 8000
CMD ["daphne", "-b", "0.0.0.0", "-p", "8000", "myproject.asgi:application"]

nginx.conf

 location / {
            proxy_set_header Host $http_host;
            proxy_set_header X-Forward-Proto https;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://localhost:8443/;
    }

    #path to proxy my WebSocket requests

    location /ws/ {
            proxy_pass http://localhost:8443;
            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;         
    }

и я использую docker-compose для создания приложения и его конфигурация такова

version: "3.8"
services:
  myservice:
    image: myimage
    container_name: my_container
    ports:
      - 8443:8000

Теперь мой вебсокет работает нормально. Чтобы решить эту проблему, мне пришлось изменить proxy_set_header Connection “upgrade”; на proxy_set_header Connection Upgrade;

Вернуться на верх