gpt4 book ai didi

node.js - nginx 上的代理传递 Socket.IO 连接不起作用

转载 作者:太空宇宙 更新时间:2023-11-03 23:00:14 25 4
gpt4 key购买 nike

我正在尝试使用 nginx 代理传递 node.js-socket.io 应用程序。

客户端是一个html文件,里面有一些javascript;

<html>
<head>
<script src="socket.io.js"></script>
<script>
var socket = io('http://localhost:80');
socket.on('welcome', function(data){
console.log('Server says:' + data);
socket.emit('client-response', 'thank you!');
});
</script>
</head>
<body>
Socket.io
</body>
</html>

应该在 nginx.conf 文件中代理传递的服务器 block 是这样的;

server {
listen 80;
listen [::]:80;
#root /usr/share/nginx/html;
include /etc/nginx/default.d/*.conf;

location / {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_pass "http://localhost:2156";
}

error_page 404 /404.html;
location = /40x.html {
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}

我的 Node.js 应用程序已在端口“2156”中启动并运行。

当我测试这个时,客户端尝试访问端口 80 上的 socket.io,但失败并出现 404 错误(因为 nginx 应该将代理传递到端口 2156,但它没有)。

我在这里缺少什么?

最佳答案

编辑:我已将客户端更改为在 "http://localhost/socket.io/" 进行连接,并重写了 nginx.conf,如下所示:

server {
listen 80 default_server;
listen [::]:80 default_server;
root /usr/share/nginx/html;

location /socket.io/ {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
proxy_pass http://localhost:2156/socket.io/;
}

error_page 404 /404.html;
location = /40x.html {
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}

它成功了。

关于node.js - nginx 上的代理传递 Socket.IO 连接不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50198644/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com