【问题标题】:How to get nginx/1.3.14 working as proxy with nodejs and socket.io如何让 nginx/1.3.14 与 nodejs 和 socket.io 一起作为代理工作
【发布时间】:2013-03-14 00:16:12
【问题描述】:

我有一个 nginx 服务器为 web 应用程序提供我所有的静态内容。 该应用程序使用在 node.js 中实现的 websockets unsing socket.io。 node.js 后端正在监听 8000 端口。

如果我通过端口 8000 将 socket-io.js 文件包含在静态交付的文档中,一切正常,但我已经阅读了一些关于使用 nginx 作为代理处理内部端口 8000 的内容

所以我#ve 构建了一个像这样的配置:

server {

 server_name domain.com;
 access_log /var/log/nginx/domaim.com.log;
 location / {
    root /home/app/static/;
 }

 location /socket/ {
        proxy_pass http://127.0.0.1:8000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
 }
}

然后可以通过 domain.com/socket/ 访问 socket.io (收到消息 Welcome to socket.io)。 静态内容也被传递 但我找不到任何方法通过端口 80 加载“socket.io/socket.io.js”文件。

这可能以干净的方式吗?

【问题讨论】:

  • 听起来你混淆了两件事:提供作为 socket.io 一部分的静态 JS 文件,而不是将 socket.io 连接传递回运行 socket.io 后端的 node.js。您应该像提供任何其他 JS 文件一样提供 socket.io 客户端文件。
  • @Code Painters 优先。进行了一些更改(将 js 嵌入我的静态文件夹中)。但奇怪的是当我连接 io.connect('domain.com/socket'); socket.io 似乎将 url 更改为 domain.com/socket.io 然后再次失败。所以我将位置更改为 socket.io,现在它可以工作了(但是为什么 socket.io 客户端使用不同的 url 来连接给定的呢?)
  • @CodePainters 请看看这个:stackoverflow.com/questions/23103241/…。我被困在这里了

标签: node.js sockets nginx socket.io


【解决方案1】:

你可以使用socket.connect(url, {resource:'socket'})

默认资源是socket.io

https://github.com/LearnBoost/Socket.IO/wiki/Configuring-Socket.IO

【讨论】:

    猜你喜欢
    • 2019-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-13
    • 2023-02-02
    • 2018-02-24
    相关资源
    最近更新 更多