#nginx #flask #websocket #gunicorn #flask-socketio
Вопрос:
Я размещаю приложение flask в Ubuntu 18.04 LTS с Nginx и Gunicorn. Я использую Flask-SocketIO==5.0.1
для бэкенда и <script src="https://cdn.socket.io/3.1.3/socket.io.min.js"></script>
для интерфейса. вот моя конфигурация сервера:
server {
server_name toollaza.com;
location /static {
alias /home/ubuntu/toollaza/video5/static;
}
location / {
proxy_pass http://localhost:8000;
include /etc/nginx/proxy_params;
proxy_redirect off;
}
location /socket.io {
include proxy_params;
proxy_http_version 1.1;
proxy_buffering off;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_pass http://localhost:8000/socket.io;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/toollaza.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/toollaza.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = toollaza.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name toollaza.com;
return 404; # managed by Certbot
}
Но проблема в том, что браузер не может подключиться к серверу через сокет. Вот некоторые ошибки, которые я обнаружил в консоли браузера:
Failed to load resource: the server responded with a status of 400 (BAD REQUEST)
WebSocket connection to '<URL>' failed: WebSocket is closed before the connection is established.
22WebSocket connection to '<URL>' failed: WebSocket is closed before the connection is established.
WebSocket connection to 'wss://toollaza.com/socket.io/?EIO=4amp;transport=websocketamp;sid=hqBln0W4o4QOXAtMAAAB' failed: WebSocket is closed before the connection is established.
GET https://toollaza.com/socket.io/?EIO=4amp;transport=pollingamp;t=NjISAoGamp;sid=jDAmKGDdhq6xxiSYAAAC 400 (BAD REQUEST)
polling-xhr.js:206 POST https://toollaza.com/socket.io/?EIO=4amp;transport=pollingamp;t=NjISDgFamp;sid=Qlz9s9KQZ9QTUMDUAAAB 400 (BAD REQUEST)
В чем проблема?
Спасибо