Сбой подключения Nginx / Apache2 WebSocket: Ошибка при рукопожатии WebSocket: Неожиданный код ответа: 404 - PullRequest
0 голосов
/ 07 января 2019

Я использую Ubuntu 18.04 LTS, Django 2.1, Python 3.6, Nginx, Gunicorn, и проект тестирования, с которого я скопировал, находится по этой ссылке: https://channels.readthedocs.io/en/latest/tutorial/part_1.html

Я развернул сервер Ubuntu в соответствии с инструкциями здесь: https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-18-04#troubleshooting-nginx-and-gunicorn

Но я получил ошибку 404. Соединение WebSocket с 'ws: //54.184.201.27/ws/chat/lobby/' не удалось: Ошибка при рукопожатии WebSocket: Неожиданный код ответа: 404 Сокет чата закрыт неожиданно

Я получил представление о проблемах на github, опубликованных здесь: https://github.com/socketio/socket.io/issues/1942, и ответы таковы, что я должен добавить некоторый код в мой файл conf. Но я все еще получил ошибку.

/ и т.д. / Nginx / сайты-доступные / project.conf

server {
    listen 80;
    server_name 54.184.201.27;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /var/www/django-channels/static;
    }

    location / {
        include proxy_params;
        proxy_pass http://unix:/run/gunicorn.sock;
        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;


    }

}

После того как я добавил proxy_set_header Host $ host, я получил ошибку:

Invalid HTTP_HOST header: '54.184.201.27,54.184.201.27'. The domain name provided is not valid according to RFC 1034/1035.

Я не указывал здесь хост host $ proxy_set_header, так как он выдаст ошибку неправильного IP-адреса. Есть идеи, как решить проблему?

Похоже, поскольку я использовал gunicorn, я не должен ставить те настройки прокси, которые могут быть дублированы.

...