Кадди для https поверх работающего приложения django asgi предположительно нарушает связь по websocket

У меня есть работающее приложение django asgi, которое использует каналы для связи по веб-сокету с daphne и redis, и работает в докеризованной установке. Чтобы включить безопасный протокол https, я попытался найти решение с использованием caddy с самоподписанными сертификатами (приложение развернуто на сервере внутри моей организации).

У меня получилось настроить caddy так, что я могу получить доступ через https, но это, похоже, нарушает часть websocket. Например, при нажатии на некоторые кнопки, которые должны запускать взаимодействие через websocket, я получаю ошибки типа Uncaught ReferenceError: can't access lexical declaration 'ws' before initialization с указателем на то место, где я делаю ws.send(...) в javascript. Websocket инициализируется с помощью

let ws = new WebSocket('ws://' + window.location.host + '/ws/validation/');

Вот мой docker-compose.yml:

services:
  mywebapp:
    build:
      context: .
      dockerfile: Dockerfile.prod
      ssh:
        - default
    command: daphne -b 0.0.0.0 -p 8080 mywebapp.asgi:application
    ports:
      - "8080:8080"
    volumes:
      - .:/app
    depends_on:
      - redis
    env_file:
      - .env
  redis:
    image: redis:latest
    ports:
      - "6379:6379"
  caddy:
    image: caddy:latest
    ports:
      - "8081:80"   
      - "8443:443" 
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile 
      - /selfsigned.crt:/etc/ssl/certs/selfsigned.crt
      - /selfsigned.key:/etc/ssl/private/selfsigned.key
    depends_on:
      - mywebapp
volumes:
      caddy_data:

А это мой Caddyfile:

example.com {
    tls /etc/ssl/certs/selfsigned.crt /etc/ssl/private/selfsigned.key
    reverse_proxy mywebapp:8080 {
        header_up Host {host}
        header_up X-Real-IP {remote}
        header_up X-Forwarded-For {remote}
        header_up X-Forwarded-Proto {scheme}
        header_up Connection {>Connection}
        header_up Upgrade {>Upgrade}
    }
}

Я буду рад предоставить больше контекста, если это необходимо, в настоящее время я не уверен, в чем может быть проблема, и у меня мало опыта работы с инструментами. Мое приложение работало до добавления службы caddy в docker-compose.yml и Caddyfile; единственным изменением, которое я сделал, было добавление этого в settings.py:

SECURE_SSL_REDIRECT = True
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
CSRF_COOKIE_SECURE = True
SESSION_COOKIE_SECURE = True
CSRF_TRUSTED_ORIGINS = [
    'https://example.com:8443'
]
Вернуться на верх