Ошибка подключения Nginx/gunicorn WebSocket: ошибка во время рукопожатия WebSocket: неожиданный код ответа: 404/400

Поэтому я использую Centos 7, Django 2.1.3, Python 3.6, Nginx, Gunicorn, uvicorn, Channels для проекта чата.
Я развернул проект на сервере Centos: я запускаю проект с помощью службы Gunicorn.
теперь, когда я тестирую соединение WebSocket, используя server_ip, как этоws://xx.xxx.x.xx:82/ws/chat/: он работает отлично, но когда я использую доменное имя для этого ip, как это wss://myDomaineName/ws/chat/: Я получаю эту ошибку (failed: Error during WebSocket handshake: Unexpected response code: 404)
причина, по которой я использую wss вместо ws при использовании myDomaineName, потому что у меня есть WAF с SSL, который я использую для перенаправления на сервер проекта.
это мой файл конфигурации nginx в /etc/nginx/conf.d:

map $http_upgrade $connection_upgrade {
        default upgrade;
        '' close;
}

upstream uvicorn {
   server unix:/srv/www/myProject/run/gunicorn.sock fail_timeout=10s;  
}

server {
    listen   82;
    access_log /srv/www/myProject/logs/nginx-access.log;
    error_log /srv/www/myProject/logs/nginx-error.log warn;
    root   /srv/www/myProject/back-end;

    location /ws/ {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://uvicorn;   
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_buffering off;
    }


}

Я почти уверен, что проблема в Nginx conf, потому что когда я тестирую, я получаю это в nginx-access.log:
xx.xxx.x.xx - - [18/Sep/2019:11:37:05 +0100] "GET /ws/chat/ HTTP/1.1" 404 0 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36"
и я ничего не получаю в nginx-error.log.
Я прочитал много таких проблем, как это соединение Nginx/Apache2 WebSocket с ошибкой: Ошибка во время рукопожатия WebSocket: Неожиданный код ответа: 404 или https://github.com/socketio/socket.io/issues/1942, и я много раз менял конфигурацию, но я получаю ту же ошибку или ту же ошибку сUnexpected response code: 400. Есть идеи, как решить проблему?

0 ответов

Другие вопросы по тегам