nginx - 无法连接到 socket.io 服务器
问题描述
我已将 NGINX 设置为将到 example.com 的请求路由到端口 3000 上的 nodejs 服务器,该服务器为前端提供服务,并将 example.com/api 路由到端口 3001 上的 nodejs api 服务器。
我尝试连接到端口 3001 上的套接字,例如:
const socket = openSocket('example.com/api');
但我在控制台中收到错误:
polling-xhr.js:265 POST https://example.com/socket.io/?
EIO=3&transport=polling&t=MWPLGiL 404 (Not Found)
看起来 socket.io 仍在尝试仅连接到 example.com。知道为什么 /api 被忽略了吗?我需要这个去example.com/api,因为该服务器配置为处理套接字连接。如果有人可以帮助我,将不胜感激。谢谢!
解决方案
我通过在 NGINX 配置中添加以下内容解决了这个问题:
location ~ ^/(api|socket\.io) {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:3001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 900s;
}
很抱歉在没有深入挖掘的情况下提出这个问题。希望这对其他人有帮助。
推荐阅读
- python - 树视图标题的活动背景颜色
- html - 无法在特定分辨率下折叠引导导航栏
- python - 硒驱动程序中的Python递增字符串编号
- python - 如何使用递归处理可变数量的嵌套for循环?
- java - 通过 Spring Data JPA 请求子列表的子条件
- javascript - 根据值将数组收集到子数组桶中(本身就是数组)
- python - Python:复制并粘贴到特定的行和列
- android - phoneauthprovider verifyphonenumber timeout
- ios - 当我从 tableview 中删除单元格时,未删除的单元格被重复 SWIFT
- stata - 有没有办法翻转Stata中的观察顺序?