关于一个端口 转发的疑问

2023-05-16 11:56:59 +08:00
 blacktail

我有一个游戏面板,分为前端和后端。 前端是一个 php 服务,由 nginx 代理,跑在 80 端口上。 后端是一个 websocket 服务,跑在 8080 端口上。 在前端上点击某个按钮进入游戏服务器控制面板会去连接后端的 websocket 。

我把面板的 80 端口在路由器里用另一个端口转发出去了,大概是 http://xxxx.top:1234,但是外网访问时,每当进入游戏服务器控制面板就会报错。 而在局域网访问时正常的。

目前尝试过把 8080 也转发出去,然后在访问时候手动更改端口,大概是 http://xxxx.top:1235,然后就报错。 {"error":"The required authorization heads were not present in the request."}

所以有啥好办法能转发这个 websocket 服务,让外网也能访问吗。

2291 次点击
所在节点    程序员
16 条回复
guguji5
2023-05-16 12:05:47 +08:00
路由器 ?
blacktail
2023-05-16 12:08:27 +08:00
@guguji5
doraf
2023-05-16 12:12:49 +08:00
这报错说请求中缺少 “authorization heads ”,正常情况下,这个“authorization heads ”哪里来的?
blacktail
2023-05-16 12:19:53 +08:00
@doraf 应该来自于这里
![图片]( https://i.328888.xyz/2023/05/16/ViwzY8.png)
blacktail
2023-05-16 12:22:55 +08:00
doraf
2023-05-16 12:25:38 +08:00
@blacktail “authorization heads ”是如何设置的,设置成功了么,如果成功了,使用的时候,ws://这个请求能正常获取之前设置的“authorization heads ”吗?一步步检查检查吧。
blacktail
2023-05-16 12:26:48 +08:00
@doraf 这个面板不是我开发的。。。并不清楚这玩意如何设置的。
chrawsl
2023-05-16 12:52:00 +08:00
nginx 反代传递一下 header 试试

proxy_set_header Authorization $authorization ;
blacktail
2023-05-16 13:24:14 +08:00
@chrawsl 把 8080 反代到 80 ?
chrawsl
2023-05-16 13:27:08 +08:00
@blacktail 要不你贴一下整个配置文件?
blacktail
2023-05-16 13:37:08 +08:00
chrawsl
2023-05-16 15:57:48 +08:00
看着像在外网尝试连接了内网的 ws 地址,没想到什么好的解决方案
blacktail
2023-05-16 16:08:13 +08:00
@chrawsl 。。。就是这样的,主贴里说了。问题就在于外网访问连不上内网的 websocket 。
chrawsl
2023-05-16 16:58:02 +08:00
要不就先映射一下 ws 端口,然后在前端判定一下当前域名,在内网就连内网地址,在外网就连外网地址,或者在 nginx 反代的做一下 replace ,直接全文替换连接的地址
blacktail
2023-05-16 17:08:51 +08:00
@chrawsl
1. 第一个办法。面板不是我开发的,做不了。。。
2. 第二个办法?把 ws 的 8080 反代到 80 上?
LinePro
2023-05-16 18:53:19 +08:00
解决方法应该是使用 nginx 反向代理内网 8080 端口上的 http / websocket 服务到外网没错。
贴一下你反代 8080 的 nginx 配置文件,还有具体的报错响应,请求头、请求内容、响应头、响应内容与内网中的正常请求比较一下看有没有什么不一致的地方。另外再检查一下是不是有什么非 ws 的普通 HTTP 请求发生错误,比如跨域之类的问题。
反正基本思路就是检查有什么不一样的请求和响应导致了错误。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/940369

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX