利用华为云 Flexus X 实例解决家里公网 80 和 443 端口不开放问题

YG科技 后端 最近


���大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂

 

@TOC

写在前面

今天,手里拿到了一台华为云 Flexus X 实例的云服务器,结合实际场景,我们发挥一下他的作用。

最近正好华为云 828 搞活动,最高可以领 8280 的优惠券,大家有需求的千万要抓住这次机会哇。活动地址:在这里

优惠券如下:

 

拿到手后,简单的做了个评测,整体情况还是蛮不错的,所以,今天就结合我自己家里的实际场景,做个简单的应用吧。

Flexus X 实例云服务器

介绍

首先,flexus 系列的产品不止有云服务器,还有如下一些产品:

1. Flexus L 实例的云服务器

2. Flexus X 实例的云服务器

3. Flexus 云数据库 RDS

4. Flexus 云容器实例

5. Flexus 数字人

6. Flexus 企业搜索服务

7. Flexus 智能数据洞察

8. Flexus 云会议

今天,我们不表别的,只来表一表 Flexus X 实例云服务器

Flexus X 实例云服务器

官方介绍地址:在这里

柔性算力,六倍性能,旗舰体验,覆盖高科技、零售、金融、游戏等行业大多数通用工作负载场景

其特点如下:

1. 柔性算力随心配基于用户业务负载动态和内存峰值画像,动态推荐规格,减少算力浪费,提升资源利用率

2. 一直加速一直快首创大模型加持,智能全域调度;X-Turbo 加速,常见应用性能最高可达业界同规格 6 倍

3. 越用越省降本多按照算力规格变化,精准计算用量,按需灵活计费,搭配智能推介,始终确保成本更优

4. 安全可靠更放心提供旗舰级安全品质,跨 AZ 99.995%可用性,100+全球权威合规认证

满足的场景也是多样化的:

· 基于 X 实例搭建电商交易平台,可以从容面对电商市场瞬息万变对的业务压力变化

· 面向博客、论坛,和企业门户等业务场景,帮助企业传播价值信息,促进信息共享和交流,支撑用户建设多功能的传播和交互平台

· 开发者在开发、测试过程中需要的环境资源,可以选择从云上提供。基于 X 实例搭建开发测试环境,更加便利,成本更优

· 适用于搭建游戏后台服务器,强大算力轻松应对千人同时在线,同时平滑扩容可快速应对服务器玩家数量上涨诉求,超强的网络加速能力提升用户体验

下面,我们就开始使用!!!


服务器的情况如上所示,大家也可以看的出来,确实很强悍!

我们要做什么?

我家里有 ipv4 的公网 ip,但是运营商把我的 80 和 443 端口给屏蔽掉了,所以我在家里部署了某个小服务后,比如端口是 8900,那么用户访问的时候就需要这么访问:ip:8900,如果我们将域名解析到这个公网 ip 上后,用户访问就成了:域名:8900,可以看的出来,不是很友好。

友好的方式就是我们需要将后面的端口去掉,但是说来容易,不好操作,唯一的办法就是将域名从某一台没有封 80 和 443 端口的公网服务器用 nginx 转发一下,这不,就把华为云的 Flexus X 实例的云服务器用上了。

原理流程图

下面,为了方便理解,我在这简单的画了个流程图,如下所示:

 

简单的解释一下:

我们以:aaa.com 这个域名为例:

1. 用户直接从浏览器中访问:aaa.com

2. 我们将会 aaa.com 解析到华为云 Flexus X 实例服务器上

3. 在华为云 Flexus X 实例的服务器上安装 caddy 或者 nginx,用于反向代理,我这边以 nginx 为例。

4. 华为云 Flexus X 实例的服务器反向代理到家里的 lucky 上

5. lucky 进行反向代理,解析不同的二级域名到不同的服务上。

整体原理如上所示。

解析域名至华为云 Flexus X 实例的服务器中

我这边域名是从腾讯上购买的,所以需要线上腾讯云控制台中的域名解析界面:

添加一条 ipv4 的解析记录,然后就完事儿了,

当然,我们也可以直接这么添加:

记录名称是:*,记录值是华为云 Flexus X 实例服务器的地址,这样所有二级域名的解析就都到这个服务器下面了。

上诉所示,我们将所有子级的 aaa.com 的访问,全部转发到了 https://ip4 地址:8888 这里啦。监听的事 80 和 443 端口,也就是用户访问的时候不需要带着端口啦。

打开光猫端口映射

下面,我们可以看到 8888 所有的访问都到光猫上了,这样我们就需要放开一下 8888 这个端口,在光猫中,我们叫:端口映射。

浏览器中输入光猫的管理地址:192.168.2.1

可能光猫不同,这里设置的方式也不同。参考即可。

lucky 中申请 ssl 证书

如果需要通过 https 访问本地服务,则需要先申请 ssl 证书,lucky 比较好的一点就是,只要申请一次,三月到期的时候,他会自动重新申请,达到自动续签,蛮方便的。

首先,我们进入 lucky 后台管理界面后,点击左侧菜单【SSL/TLS 证书】,然后点击右边【添加证书】

按照我标注的这些,选择和填写一下即可,然后剩下的默认,点击确定,得稍微等会儿,证书才会自动申请下来。

我们可以从上变的日志模块中查看具体的申请情况。

web 服务转发

下面,也就是最后一步,我们需要添加 web 服务,来达到反向代理的目的。

点击左侧菜单:【Web 服务】,然后点击上边【添加 Web 服务规则】

 

1. 操作模式

· 简易模式:满足大多数人使用要求

· 定制模式:提供更多可定制的参数 小白用户切勿修改填写定制模式下的任何参数

2. 监听类型

· 你可以两种都勾上。

· 没有公网 V4 的情况下只勾上 v6 就足够了。

· 小米路由 v4 的 443 和 80 被系统占用,如果你要使用这两个端口可以使用 v6 的 80 和 443

3. 监听端口

· 所谓隐藏端口只是 http 使用了 80 监听端口,https 使用了 443 监听端口,除非你明确知道你的运营商没有禁用 80 和 433 端口,否则不建议使用这两个端口。

· 支持两条不同的 Web 服务规则,一条启用 TLS(HTTPS),一条不启用 TLS(http)监听同一个端口.

4. 防火墙自动放行

· Lucky 运行在 Openwrt 等路由器环境,并且由 iptables 控制防火墙时此功能可以自动控制端口开放关闭

· 如果你的 Lucky 运行在 Windows 或者 Docker 环境下可以关闭此功能

5. TLS 开关

· 决定你是否使用 https

· 证书请在菜单===>安全相关===>SSL 证书 添加管理,每次手动添加证书后需要重启一次 Web 服务规则证书才生效。

6. 添加 Web 服务子规则

· 你可以添加任意条 Web 服务子规则

· 子规则中的 Web 服务类型支持反向代理,重定向和 URL 跳转

· 子规则中的前端域名添加的就是你所需的域名,不要包含 http://开头部分,直接填写域名即可。例如 123.abc.com

· 虽然前端域名与路径这部分参数支持 123.abc.com/def 这种带路径的方式,但不建议用作反向代理,只建议做跳转或重定向使用。使用路径形式反代有任何问题都不要反馈给开发者。

· 子规则中的后端地址添加的就是你的内网的服务地址,例如http://192.168.36.180:28888 , 当后端服务是带有自签证书的 https 服务时,你需要在定制模式中启用 **忽略后端 TLS 证书验证

· 当服务类型是重定向或 URL 跳转时,后端地址你可以填写任意网址。重定向使用时支持 https://{host}:{port}的形式,实现 http 跳转 https。

· 子规则中的 BasicAuth 认证功能可以让陌生人不能轻易访问你的 Web 服务。

· 携带客户端 IP、追加客户端 IP、跨域支持等更多功能可在定制模式中查看。小白直接忽略。

使用注意添加完规则后要第一时间留意规则开关是否显示为开或者查看添加 Web 服务规则旁边的模块日志,看是否存在 启用反向代理规则[http][:16666]成功" 这类的日志。如果日志提示规则启用出错,请更换监听端口。外网无法访问时,查看默认子规则和各个子规则是否有访问日志显示。如果没有访问记录自行检查防火墙/路由 ipv4 端口转发等自身网络设置。有问题先查阅常见问题中 Web 服务相关问题。

主要是子规则里面的内容,我是这么写的:

如果有多个子规则,则需要添加多个,前端地址是你的子域名,后端地址是你实际项目的后端地址。可以带着端口。

最后,点击确定即可。

我们可以检测一下通不通:

很棒,是通的。

总结

本文,我们主要利用了华为云 Flexus X 实例服务器解决了家里公网 80 和 443 端口被封的问题,其实本质上还是在别的服务器上转发了一下,才实现了默认不带端口的访问形式。

为什么要这么做?除了方便用户之外,主要是我代码里面都已经写好了,服务要是加上端口的话,我还得改代码去,懒的改....

整体,测了下利用华为云 Flexus X 实例服务器转发和直连,速度是差不多的,所以;理论上这种方案的可行性也是比较高的。

最后,再次推荐大家看看这个活动,真的很划算哇,点我查看

 

Apipost 私有化火热进行中

评论