运行Socket.io的flask应用程序在POST请求中遇到400个握手错误,但我已根据在线阅读的文档和帖子在NGINX的配置中添加了该消息。我在AWS中使用应用程序负载平衡器,并设置了:80目标组和:443侦听器,该侦听器转发到目标组。我还为/socket.io路由添加了一条规则,以将请求转发到:80上的目标组,并在目标组中启用了粘性会话。我还使用了Route53域名并强制实施SSL,除了套接字通信之外,其他一切都正常。
NGINX conf文件:
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;
}
}
与socket.io的js文件连接:
var socket = io();
socket.on('connect',() => {
console.log(socket.connected); // true
});
连接返回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"