V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Xheldon
V2EX  ›  服务器

如何让请求 HTTPS 的流量转发到 HTTP?

  •  
  •   Xheldon · 195 天前 · 1082 次点击
    这是一个创建于 195 天前的主题,其中的信息可能已经有所发展或是发生改变。
    RT

    背景是这样的,我家里的 TPLNIK 的路由器,自带了 DDNS 服务,但是只提供 HTTP 的,所以外网只能通过 HTTP 访问家里的服务,可以再设置端口映射不同的本地服务,无限流量很稳定非常好用。

    我另外还有一个域名 a.bbb.com ,设置了 CNAME 到 TPLINK 给的 DDNS 域名上,此时通过 http 访问我的域名+端口号是可以到我本地的服务的。

    但是问题是,我想搞个小程序,以家里的服务做后端,但是小程序的安全域名要求必须是备案过的且是 HTTPS 的, 因此我想将来自客户端发起对我的域名的请求( https )的,通过 tplink 的 ddns 转发到我本地的 http 服务。

    这里有一些问题:

    1. 证书问题。我本地的 Web 服务是否可以通过在根目录设置一个 a.bb.com 的证书等手段,达到外网 https 访问 a.bb.com 就可以穿访问到我本地的服务呢?

    2. frp 我试过似乎比较费劲。服务端设置好了 frps ,本地设置好了 frpc ,但是因为我的域名是腾讯云备案过的,找朋友搞了个阿里云的服务器,结果腾讯云添加 A 记录到 阿里云的服务器 IP 的时候,访问域名,居然提示我域名未备案,看阿里云的文档介绍貌似还得再在阿里云备份一次。

    3. 云函数转发。这就是另一个曲线救国了,就是把客户端的每个请求再用函数转发给我本地的服务器。目前看华为云函数免费 100 万次/月完全满足需求,但是没试过,不知道行不行,它那个 API 网关服务,要求太严格了,而且还必须明确 path 、query 、header ,感觉不是干我这个事儿的,同时还要写函数,费劲呐

    4. DNS 的方式我试过了,不可行。

    5. 搞个 Nginx 服务器似乎也不错,但是 Nginx 能 proxy_pass 非本机的地址吗?本人网络小白没研究过。。

    6. 主要还是不想花钱,现在服务器太贵了,带宽贵,流量贵,而且我小程序上不了架,就服务我亲朋好友十几个人(体验版限制人数),所以一个月撑死就几百个请求,实在不想花钱买服务器。

    7. 有什么其他办法实现我的诉求吗。。

    8. TPLINK 的 DDNS 实在是太好用了,无限流量速度还快,没测过带宽,我用它外网访问内网的 NAS ,通过 Infuse 看 BT 下载的电影,很棒。所以如果用了其他的内网穿透,就要考虑流量的事情了,哎又是钱。。

    9. 花生壳花了 6 块巨资,开了 https 的内网穿透服务,但是还是上一条说的,一个是限制太多( 1 个月 1G 、1M 带宽),而且无法跟免费无限流量的 TPLINK DDNS 共存(因为只有一个公网 IP 嘛)。

    拜谢拜谢!

    另:实在不行就只能买个腾讯云服务器自己搭 frp 了然后禁用 TPLINK 的 DDNS 了,这样就不能在外网用 infuse 看小电影了,难受🤣
    第 1 条附言  ·  192 天前
    最终方案是搞了个云主机,然后配置 nginx 把访问我腾讯云 https 域名的流量转发到我本地 ddns 的 http 域名上了。
    感谢各位,此贴终结~
    11 条回复    2023-10-16 19:58:34 +08:00
    oneisall8955
        1
    oneisall8955  
       195 天前 via Android
    捋一下

    假设家宽 ddns 到 home.foo.com ,申请免费 DV 证书(备案了 foo.com 这个域名)

    tplink 配置端口转发,路由器 10443 端口转发到内网 nginx 的 443 端口。在 nginx 那 DV 证书配置好

    这时候,https://home.foo.com:10443 可以访问到 nginx 吧?
    Xheldon
        2
    Xheldon  
    OP
       195 天前
    问题在于,tplink 的端口转发的时候,只支持外网的 http 类型转发(不确定我有没有正确使用,还是说 http 只表示是 web 类型,不表示协议,因为同时可选的还有 DNS 、FTP 、Gopher 等,但就是没有 HTTPS ),nginx 我也不熟固有此一问。。我用的 nextjs ,很简单的一个 web 服务,做接口用的。
    Xheldon
        3
    Xheldon  
    OP
       195 天前
    @oneisall8955 问题在于,tplink 的端口转发的时候,只支持外网的 http 类型转发(不确定我有没有正确使用,还是说 http 只表示是 web 类型,不表示协议,因为同时可选的还有 DNS 、FTP 、Gopher 等,但就是没有 HTTPS ),nginx 我也不熟固有此一问。。我用的 nextjs ,很简单的一个 web 服务,做接口用的。
    xixiv5
        4
    xixiv5  
       195 天前
    你 nginx 反向代理就行,https://xxxx.com 反向代理到 你的 DDNS http://aaaa.com:端口 带不带都行
    rebecca554owen
        5
    rebecca554owen  
       195 天前 via Android
    按理来说,你开端口转发就是纯数据转发,不受协议影响,https 可能 443 被屏蔽了而已。
    IvanLi127
        6
    IvanLi127  
       195 天前
    你自己测试的话,直接把域名解析到本地的开发机上不就好了,证书去搞个免费的就行。反正本地调通了再看要不要搞 ddns 。ddns 只是域名解析,和协议没关系,如果不通,换端口试试。如果一直不行,可能 HTTPS 协议被运营商屏蔽了。
    IvanLi127
        7
    IvanLi127  
       195 天前
    @IvanLi127 我看走眼了,op 不是要测试,不过流程一样。先用 hosts 或者直接改 DNS 解析把域名解析成本地的服务器内网 ip ,用 https 测通了再搞 DDNS ,这样一步步做比较好排查问题。
    Xheldon
        8
    Xheldon  
    OP
       195 天前
    @rebecca554owen 啊。。这倒有可能,因为有个点比较奇怪,我北京联通蜂窝网络访问 tplink 的 ddns 的 80 端口是访问不通的,但是北京联通宽带可以访问🤣 估计 443 这种常用的端口也一样
    Xheldon
        9
    Xheldon  
    OP
       195 天前
    @xixiv5 nginx 有跨域问题吗?我研究一下去,感谢感谢~ 另外,还是需要外网一台服务器🤣
    Xheldon
        10
    Xheldon  
    OP
       195 天前
    @IvanLi127 感谢提供思路!我试试去,如果协议无关就太棒了 😆
    rebecca554owen
        11
    rebecca554owen  
       194 天前 via Android
    HTTP 协议端口可以用 8443 ,2053 ,2083 等等
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4323 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 44ms · UTC 05:33 · PVG 13:33 · LAX 22:33 · JFK 01:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.