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

2023-10-15 22:08:08 +08:00
 Xheldon
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 看小电影了,难受🤣
1333 次点击
所在节点    服务器
11 条回复
oneisall8955
2023-10-15 22:28:12 +08:00
捋一下

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

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

这时候,https://home.foo.com:10443 可以访问到 nginx 吧?
Xheldon
2023-10-15 23:46:20 +08:00
问题在于,tplink 的端口转发的时候,只支持外网的 http 类型转发(不确定我有没有正确使用,还是说 http 只表示是 web 类型,不表示协议,因为同时可选的还有 DNS 、FTP 、Gopher 等,但就是没有 HTTPS ),nginx 我也不熟固有此一问。。我用的 nextjs ,很简单的一个 web 服务,做接口用的。
Xheldon
2023-10-15 23:46:34 +08:00
@oneisall8955 问题在于,tplink 的端口转发的时候,只支持外网的 http 类型转发(不确定我有没有正确使用,还是说 http 只表示是 web 类型,不表示协议,因为同时可选的还有 DNS 、FTP 、Gopher 等,但就是没有 HTTPS ),nginx 我也不熟固有此一问。。我用的 nextjs ,很简单的一个 web 服务,做接口用的。
xixiv5
2023-10-16 04:14:56 +08:00
你 nginx 反向代理就行,https://xxxx.com 反向代理到 你的 DDNS http://aaaa.com:端口 带不带都行
rebecca554owen
2023-10-16 07:37:59 +08:00
按理来说,你开端口转发就是纯数据转发,不受协议影响,https 可能 443 被屏蔽了而已。
IvanLi127
2023-10-16 09:18:41 +08:00
你自己测试的话,直接把域名解析到本地的开发机上不就好了,证书去搞个免费的就行。反正本地调通了再看要不要搞 ddns 。ddns 只是域名解析,和协议没关系,如果不通,换端口试试。如果一直不行,可能 HTTPS 协议被运营商屏蔽了。
IvanLi127
2023-10-16 09:21:11 +08:00
@IvanLi127 我看走眼了,op 不是要测试,不过流程一样。先用 hosts 或者直接改 DNS 解析把域名解析成本地的服务器内网 ip ,用 https 测通了再搞 DDNS ,这样一步步做比较好排查问题。
Xheldon
2023-10-16 10:21:03 +08:00
@rebecca554owen 啊。。这倒有可能,因为有个点比较奇怪,我北京联通蜂窝网络访问 tplink 的 ddns 的 80 端口是访问不通的,但是北京联通宽带可以访问🤣 估计 443 这种常用的端口也一样
Xheldon
2023-10-16 10:22:11 +08:00
@xixiv5 nginx 有跨域问题吗?我研究一下去,感谢感谢~ 另外,还是需要外网一台服务器🤣
Xheldon
2023-10-16 10:23:34 +08:00
@IvanLi127 感谢提供思路!我试试去,如果协议无关就太棒了 😆
rebecca554owen
2023-10-16 19:58:34 +08:00
HTTP 协议端口可以用 8443 ,2053 ,2083 等等

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

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

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

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

© 2021 V2EX