У меня есть приложение django, развернутое на эластичном beanstalk:
http://django-env.eba-bcvm9cxz.us-west-2.elasticbeanstalk.com/chart/
Я следую этому руководству: https://medium.com/@elspanishgeek/how-to-deploy-django-channels-2-x-on-aws-elastic-beanstalk-8621771d4ff0 и используя архитектуру номер 2.
Мои соответствующие файлы конфигурации следующие:
option_settings:
aws:elasticbeanstalk:application:environment:
DJANGO_SETTINGS_MODULE: dashboard.settings
PYTHONPATH: /opt/python/current/app/dashboard:$PYTHONPATH
aws:elasticbeanstalk:container:python:
WSGIPath: dashboard/wsgi.py
aws:elbv2:listener:80:
ListenerEnabled: 'true'
Protocol: HTTP
aws:elbv2:listener:5000:
ListenerEnabled: 'true'
Protocol: HTTP
-
files:
"/etc/httpd/conf.d/proxy.conf":
mode: "000644"
owner: root
group: root
content: |
ProxyPass /websockets/ ws://127.0.0.1:5000/websockets/ upgrade=NONE
ProxyPassReverse /websockets/ ws://127.0.0.1:5000/websockets/
Мне нужно было добавить upgrade=NONE
в proxy.conf, которого нет в учебнике, потому что я всегда получал 503 на клиенте, когда он устанавливал веб-сокет.
У меня есть сервер daphne, который прослушивает 5000, который успешно получает запрос веб-сокета от клиента, но клиент никогда не получает ответ от сервера. На хромированной консоли я получаю:
Соединение WebSocket с 'ws: //django-env.eba-bcvm9cxz.us-west-2.elasticbeanstalk.com/websockets/' не удалось: ошибка во время рукопожатия WebSocket: неожиданный код ответа: 408
Журналы Apache показывают следующее:
[Sat Jun 27 11:42:11.962267 2020] [watchdog:debug] [pid 9855] mod_watchdog.c(590): AH02981: Watchdog: Created child worker thread (_proxy_hcheck_).
[Sat Jun 27 11:42:11.962286 2020] [proxy:debug] [pid 9855] proxy_util.c(1940): AH00925: initializing worker ws://127.0.0.1:5000/websockets/ shared
[Sat Jun 27 11:42:11.962298 2020] [proxy:debug] [pid 9855] proxy_util.c(2000): AH00927: initializing worker ws://127.0.0.1:5000/websockets/ local
[Sat Jun 27 11:42:11.962319 2020] [proxy:debug] [pid 9855] proxy_util.c(2035): AH00930: initialized pool in child 9855 for (127.0.0.1) min=0 max=4 smax=4
[Sat Jun 27 11:42:11.962330 2020] [proxy:debug] [pid 9855] proxy_util.c(1940): AH00925: initializing worker proxy:reverse shared
[Sat Jun 27 11:42:11.962334 2020] [proxy:debug] [pid 9855] proxy_util.c(2000): AH00927: initializing worker proxy:reverse local
[Sat Jun 27 11:42:11.962341 2020] [proxy:debug] [pid 9855] proxy_util.c(2035): AH00930: initialized pool in child 9855 for (*) min=0 max=4 smax=4
[Sat Jun 27 11:42:11.962345 2020] [proxy:debug] [pid 9855] proxy_util.c(1935): AH00924: worker ws://127.0.0.1:5000/websockets/ shared already initialized
[Sat Jun 27 11:42:11.962347 2020] [proxy:debug] [pid 9855] proxy_util.c(1992): AH00926: worker ws://127.0.0.1:5000/websockets/ local already initialized
[Sat Jun 27 11:42:30.521413 2020] [proxy:debug] [pid 9625] proxy_util.c(4059): (104)Connection reset by peer: [client 172.31.42.96:4452] AH03308: ap_proxy_transfer_between_connections: error on sock - ap_get_brigade
[Sat Jun 27 11:42:30.521453 2020] [proxy:debug] [pid 9625] proxy_util.c(2353): AH00943: WS: has released connection for (127.0.0.1)
Что не так с моей конфигурацией?