用于socket.io的Nginx配置

时间:2018-12-20 09:55:21

标签: nginx socket.io

我正在尝试在数字海洋上运行boardgame.io服务器(这可能没有什么区别)。我的问题是如何正确配置nginx以使其正常工作。我的服务器代码非常简单:

import { Game } from "./lib/game.js";
import { Server, Mongo } from "boardgame.io/server";

const server = Server({
  games: [Game],

  db: new Mongo({
    url: "my_mongo_url",
    dbname: "zz"
  })
});

server.run(3030);

我们在这里in server implmentation中可以看到,它在随后的两个端口上运行HTTP服务器和socket.io。 到目前为止,现在可以正确配置nginx以便能够处理http和websocket流量。 我基于类似的问题构建的Nginx配置,我发现还是stackoverflow:

    listen 3030;
    listen 3031;

    location / {
            proxy_pass http://localhost:3031;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;
    }

    location /socket.io {
            proxy_pass http://localhost:3030;
            proxy_redirect off;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_cache_bypass $http_upgrade;
    }

无论何时我试图连接到我的服务器,我都会收到此错误:

获取http://157.230.24.193/socket.io/?EIO=3&transport=polling&t=MVB0n6X&b64=1 404(未找到)

其处理连接的boardgame.io库:

export const App = props => {
  const CmClient = Client({
    game: Transition,
    board: TransitionBoard,
    numPlayers: 1,
    enhancer: applyMiddleware(middleware(props.playerId)),
    multiplayer: {
      server: `http://157.230.24.193`
    }
  });
  return (
    <div>
      <CmClient gameID={props.playerId} playerID="0" />
    </div>
   );
};

如果我很好地了解了socket.io创建的默认路由,并且我应该在我的Nginx配置中正确配置此位置,我不确定幕后的机制是什么以及为何尝试连接/socket.io的原因想法怎么做。它对我来说是新话题,如果我的帖子里有废话,请原谅我。

0 个答案:

没有答案