Ошибка 400 рукопожатия с балансировщиком нагрузки приложения AWS (Flask & Socket.io) - PullRequest
2 голосов
/ 06 ноября 2019

Получение 400 рукопожатия при запросах POST к моему приложению Flask, работающему с socket.io, но я добавил в конфиги для NGINX в соответствии с документами и сообщениями, которые я читаю онлайн. Я использую Application Load Balancer в AWS и установил целевую группу: 80 и прослушиватель: 443, который перенаправляет в целевую группу. Я также добавил правило для маршрута /socket.io для пересылки запроса в целевую группу по адресу: 80 и включил липкие сеансы в целевой группе. Я также использую доменное имя Route53 и применяю SSL. Все работает нормально, кроме сокетов.

Файл conf NGINX:

server {

listen [::]:80;
listen 80;
server_name _domain_name_;
access_log  /var/log/nginx/access.log;
location / {
    proxy_pass http://127.0.0.1:8000;
    include proxy_params;
}
location /socket.io {
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    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://127.0.0.1:8000/socket.io;
}
}

И подключение файла js для socket.io:

var socket = io();
socket.on('connect', () => {
console.log(socket.connected); // true
});

Connection возвращает true.

Правило слушателя

ОБНОВЛЕНИЕ

Переключен на NLB, и я по-прежнемувозникли те же проблемы, но теперь в моих журналах NGINX я вижу

connect() failed (111: Connection refused) while connecting to upstream
request: "GET /socket.io/?EIO=3&transport=polling&t=MvDPJhb HTTP/1.1", 
upstream: "http://127.0.0.1:8000/socket.io/? 
EIO=3&transport=polling&t=MvDPJhb"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...