• 请不要在回答技术问题时复制粘贴 AI 生成的内容
blacktail
V2EX  ›  程序员

关于一个端口 转发的疑问

  •  
  •   blacktail · May 16, 2023 · 2994 views
    This topic created in 1097 days ago, the information mentioned may be changed or developed.

    我有一个游戏面板,分为前端和后端。 前端是一个 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 服务,让外网也能访问吗。

    16 replies    2023-05-16 18:53:19 +08:00
    guguji5
        1
    guguji5  
       May 16, 2023
    路由器 ?
    blacktail
        2
    blacktail  
    OP
       May 16, 2023
    @guguji5
    doraf
        3
    doraf  
       May 16, 2023
    这报错说请求中缺少 “authorization heads ”,正常情况下,这个“authorization heads ”哪里来的?
    blacktail
        4
    blacktail  
    OP
       May 16, 2023
    @doraf 应该来自于这里
    ![图片]( https://i.328888.xyz/2023/05/16/ViwzY8.png)
    doraf
        6
    doraf  
       May 16, 2023
    @blacktail “authorization heads ”是如何设置的,设置成功了么,如果成功了,使用的时候,ws://这个请求能正常获取之前设置的“authorization heads ”吗?一步步检查检查吧。
    blacktail
        7
    blacktail  
    OP
       May 16, 2023
    @doraf 这个面板不是我开发的。。。并不清楚这玩意如何设置的。
    chrawsl
        8
    chrawsl  
       May 16, 2023
    nginx 反代传递一下 header 试试

    proxy_set_header Authorization $authorization ;
    blacktail
        9
    blacktail  
    OP
       May 16, 2023
    @chrawsl 把 8080 反代到 80 ?
    chrawsl
        10
    chrawsl  
       May 16, 2023
    @blacktail 要不你贴一下整个配置文件?
    blacktail
        11
    blacktail  
    OP
       May 16, 2023
    chrawsl
        12
    chrawsl  
       May 16, 2023
    看着像在外网尝试连接了内网的 ws 地址,没想到什么好的解决方案
    blacktail
        13
    blacktail  
    OP
       May 16, 2023
    @chrawsl 。。。就是这样的,主贴里说了。问题就在于外网访问连不上内网的 websocket 。
    chrawsl
        14
    chrawsl  
       May 16, 2023
    要不就先映射一下 ws 端口,然后在前端判定一下当前域名,在内网就连内网地址,在外网就连外网地址,或者在 nginx 反代的做一下 replace ,直接全文替换连接的地址
    blacktail
        15
    blacktail  
    OP
       May 16, 2023
    @chrawsl
    1. 第一个办法。面板不是我开发的,做不了。。。
    2. 第二个办法?把 ws 的 8080 反代到 80 上?
    LinePro
        16
    LinePro  
       May 16, 2023
    解决方法应该是使用 nginx 反向代理内网 8080 端口上的 http / websocket 服务到外网没错。
    贴一下你反代 8080 的 nginx 配置文件,还有具体的报错响应,请求头、请求内容、响应头、响应内容与内网中的正常请求比较一下看有没有什么不一致的地方。另外再检查一下是不是有什么非 ws 的普通 HTTP 请求发生错误,比如跨域之类的问题。
    反正基本思路就是检查有什么不一样的请求和响应导致了错误。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2953 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 15:22 · PVG 23:22 · LAX 08:22 · JFK 11:22
    ♥ Do have faith in what you're doing.