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

先看这里
写在前面
今天,手里拿到了一台华为云Flexus X实例的云服务器,结合实际场景,我们发挥一下他的作用。
最近正好华为云828搞活动,最高可以领8280的优惠券,大家有需求的千万要抓住这次机会哇。活动地址:在这里
优惠券如下:

拿到手后,简单的做了个评测,整体情况还是蛮不错的,所以,今天就结合我自己家里的实际场景,做个简单的应用吧。
Flexus X实例云服务器
介绍
首先,flexus系列的产品不止有云服务器,还有如下一些产品:
- Flexus L实例的云服务器
- Flexus X实例的云服务器
- Flexus 云数据库RDS
- Flexus 云容器实例
- Flexus 数字人
- Flexus 企业搜索服务
- Flexus 智能数据洞察
- Flexus 云会议

今天,我们不表别的,只来表一表Flexus X实例云服务器
服务器的情况如上所示,大家也可以看的出来,确实很强悍!
我们要做什么?
我家里有ipv4的公网ip,但是运营商把我的80和443端口给屏蔽掉了,所以我在家里部署了某个小服务后,比如端口是8900,那么用户访问的时候就需要这么访问:ip:8900,如果我们将域名解析到这个公网ip上后,用户访问就成了:域名:8900,可以看的出来,不是很友好。
友好的方式就是我们需要将后面的端口去掉,但是说来容易,不好操作,唯一的办法就是将域名从某一台没有封80 和443端口的公网服务器用nginx转发一下,这不,就把华为云的Flexus X实例的云服务器用上了。
原理流程图
下面,为了方便理解,我在这简单的画了个流程图,如下所示:

简单的解释一下:
我们以:aaa.com这个域名为例:
- 用户直接从浏览器中访问:aaa.com
- 我们将会aaa.com解析到华为云Flexus X实例服务器上
- 在华为云Flexus X实例的服务器上安装caddy或者nginx,用于反向代理,我这边以
nginx为例。 - 华为云Flexus X实例的服务器反向代理到家里的
lucky上 lucky进行反向代理,解析不同的二级域名到不同的服务上。
整体原理如上所示。
解析域名至华为云Flexus X 实例的服务器中
我这边域名是从腾讯上购买的,所以需要线上腾讯云控制台中的域名解析界面:

添加一条ipv4的解析记录,然后就完事儿了,
当然,我们也可以直接这么添加:
记录名称是:*,记录值是华为云Flexus X实例服务器的地址,这样所有二级域名的解析就都到这个服务器下面了。
华为云Flexus X 实例服务器配置反向代理
域名解析后,下面我们就开始在服务器的nginx中配置反向代理。比如我光猫映射的端口是8888,那么nginx里面的配置方式就如下:
# 测试反代速度
server {
listen 80;
listen 443 ssl http2;
server_name *.aaa.com;
if ($server_port !~ 443){
rewrite ^(/.*)$ https://$host$1 permanent;
}
#证书地址
ssl_certificate /home/project/https/aaa.com.pem;
ssl_certificate_key /home/project/https/aaa.com.key;
ssl_prefer_server_ciphers on;
location / {
proxy_pass https://ip4地址:8888;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location ~ ^/(ws|terminal/.+)$ {
proxy_pass http://127.0.0.1:8008;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $http_host;
}
#PROXY-END/
}
上诉所示,我们将所有子级的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服务规则】

- 操作模式
- 简易模式:满足大多数人使用要求
- 定制模式:提供更多可定制的参数 小白用户切勿修改填写定制模式下的任何参数
- 监听类型
- 你可以两种都勾上。
- 没有公网V4的情况下只勾上v6就足够了。
- 小米路由v4的443和80被系统占用,如果你要使用这两个端口可以使用v6的80和443
- 监听端口
- 所谓隐藏端口只是http使用了80监听端口,https使用了443监听端口,除非你明确知道你的运营商没有禁用80和433端口,否则不建议使用这两个端口。
- 支持两条不同的Web服务规则,一条启用TLS(HTTPS),一条不启用TLS(http)监听同一个端口.
- 防火墙自动放行
- Lucky运行在Openwrt等路由器环境,并且由iptables控制防火墙时此功能可以自动控制端口开放关闭
- 如果你的Lucky运行在Windows或者Docker环境下可以关闭此功能
- TLS开关
- 决定你是否使用https
- 证书请在 菜单===>安全相关===>SSL证书 添加管理,每次手动添加证书后需要重启一次Web服务规则证书才生效。
- 添加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实例服务器转发和直连,速度是差不多的,所以;理论上这种方案的可行性也是比较高的。
最后,再次推荐大家看看这个活动,真的很划算哇,点我查看


328

被折叠的 条评论
为什么被折叠?



