我正在尝试在数字海洋上运行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的原因想法怎么做。它对我来说是新话题,如果我的帖子里有废话,请原谅我。