当前位置: 首页 > 知识库问答 >
问题:

socket.io/WebSockets的nginx配置

岳正浩
2023-03-14

我在将nginx配置为代理WebSockets时遇到了一些麻烦。我有一个Node.js应用程序,它使用Socket.io V0.9.16侦听端口9090上的连接,使用nginx V1.6.2侦听端口9000上的连接,并且(应该)配置为将请求代理到我的Node.js应用程序。nginx配置如下所示:

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

server {
    listen 9000;
    server_name mysite.com;
    location / {
            root /var/www/mysite/web;
    }
    location /socket.io/ {
        proxy_pass http://localhost:9090;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
    }
}

这可能是安全问题吗?浏览器是否以某种方式“知道”Socket.io在端口9090上运行,并拒绝通过9000连接到它?我很难,任何帮助都很感激。

共有1个答案

桓兴腾
2023-03-14

好的,我把这个修好了。问题是,在客户端代码中,我使用IP地址而不是主机名连接到服务器:

io.connect('http://my.ip.add.ress')

所以socket.io请求与nginx配置不匹配,将上面的行改为使用'mysite.com'主机名就解决了这个问题。

 类似资料:
  • 本文向大家介绍简介Nginx服务器的Websockets配置方法,包括了简介Nginx服务器的Websockets配置方法的使用技巧和注意事项,需要的朋友参考一下 Nginx 1.3.13 已经发布了,该版本支持 Connection: upgrade 和 Upgrade 头,这就意味着支持WebSocket代理了.很多人都在等这个新特性以至于 “Nginx 支持 websockets 吗?” 成

  • 问题内容: 我是React-Redux的新技术,希望在某些实现方面对您有所帮助。 我想用套接字(socket.io)实现一个聊天应用程序。首先,用户必须注册(我在服务器端使用通行证),然后,如果注册成功,则用户必须连接到webSocket。 我认为最好的办法是对所有操作使用管道之类的中间件,并根据获取中间件的操作类型来执行不同的操作。 如果操作类型为,则创建客户端-服务器连接并设置所有将来自服务器

  • 问题内容: node.js中的socket.io和websockets有什么区别? 它们都是服务器推送技术吗?我唯一感觉到的是 socket.io允许我通过指定事件名称来发送/发送消息。 对于socket.io,来自服务器的消息将到达所有客户端,但是对于websockets中的消息,我被迫保留所有连接的数组并循环遍历,以将消息发送给所有客户端。 另外,我想知道为什么Web检查器(例如Chrome

  • 问题内容: 我们正在开发一个Web应用程序,出于各种原因,该应用程序只能在现代浏览器(IE10 +)上运行。 我们实现的功能之一是Socket.io1.x。但是,默认情况下,Socket.io客户端会尝试支持较旧的浏览器,因此它将通过长时间轮询启动连接,然后将其更新为WebSockets。鉴于我们确定浏览器支持WS,因此这是浪费时间和资源。 最终,我找到了engine.io-client的文档(S

  • 我试图提供静态文件的ngin x 1.6和代理套接字流量来自Node.js网络服务器与socket.io。 这是nginx.conf的相关部分: 它直接在浏览器和 Node.js 之间完美运行,但使用 nginx 1.6 代理时 socket.io 时间太长。握手协议需要太多时间,但如果不间断,它最终会在几分钟后开始工作。 nginx的静态文件交付工作得很好。 会有什么问题呢? 更新: 我分析了一

  • 问题内容: 使用Nginx时,我的套接字无法连接。我的配置文件是: 我的NodeJS是: 我的客户是 不用说,两者都不显示任何东西。我担心Nginx阻止了该请求,而节点却实际上从未收到它? 问题答案: 好像缺少了