起因
前些日子早上8点多突然接到合作客户的紧急电话,因为阿里云服务到期没有及时续费,导致后续操作中误删SLB和容器服务,经过小伙伴们通宵达旦的努力,还是未能完全恢复访问,希望能够过去一起看一下。
注:虽然最终的解决过程只花了不到3分钟,但确是走了一大段弯路,写下该文聊以纪念这段曲折的路程。
解决过程
顾不得收拾,马上驱车20公里到达现场,倾听小伙伴的情况后,开始按照如下思路逐一排查。
1.因为使用k8s容器服务,直接用容器外网IP访问,结果显示HTTP正常,HTTPS无法访问,报502错误,说明容器服务部署正常;
2.切换至域名访问,发现HTTP和HTTPS都访问不了;
3.通过ping确认域名指向ip,发现解析地址未指向SLB;
4.通过阿里域名解析服务(需要登录阿里云后才能访问)进行域名和SLB公网IP绑定;
5.重新通过域名访问,HTTP正常,HTTPS异常;
6.检查SSL证书,发现未在SLB中进行配置(注:SLB为新购服务器);
7.检查容器的yaml文件,确认已配置SSL证书,且没有设置nginx服务;
8.容器的yaml文件开启https及443端口,发现http异常,报502错误,https又正常了;
9.判定应该是SLB没有正确配置的原因。(奇怪为啥当初要进行SSL证书双重配置?)
于是到这里整个调查结束,大概花了20分钟;
注:因我对该项目不熟悉,且是2年前的服务器配置,最初人员都已经替换了几轮(估计是跳到阿里去了),更糟糕的是没有留下任何配置说明,
10.接下来开始设置SLB的HTTP强制转发到HTTPS,参考了阿里云的帮助文档之
[简单路由-HTTP 协议变为 HTTPS 协议之一],
[简单路由-HTTP 协议变为 HTTPS 协议之二],
[HTTP重定向至HTTPS]
palapala...
11.突然发现帮助教程和新的SLB配置页面有些不一样(注:之前都是通过nginx或者apache进行配置的,SLB上还是头一遭,为啥?因为小户人家要精打细算啊)。
教程页面如下
新的HTTP配置页面
大家看见【监听转发】的开关了吗?对,它需要【展开高级配置】后才能看到,我们3人8只眼(别问我为什么多了2只眼)竟然生生的错过了。
12.于是找【监听转发】的按钮花了好久,一开始以为阿里把这个功能给阉割了,琢磨着又不是,反反复复,复复反反配置HTTPS,又配置HTTP,然后又折腾yaml文件,甚至小伙伴们都开始建议要不要在代码里面做个强制跳转,Oh,My God!
13.然事情总是那么的因缘际会,福至心灵。有时候很苦恼的问题对于程序员来说会突然幡然醒悟,
配置好HTTPS后,偶然间点了下【监听转发】的开关,然后kuakuakuakua,一顿操作猛如虎后,分别用HTTP和HTTPS访问域名,居然ok了,瞬间满心的欢喜,内心的奔腾,面对2个多小时的折腾,心想总算对得起十几年的手艺,没有给它丢脸。
配置成功后的列表页面如下:
总结
1.虽然是小问题,但是碰到坎的时候别钻牛角尖,有时候洗个脸看个书换个情绪真的会有福报。
2.要多翻阿里云的帮助文档,想起了java手册,html文档,MSDN的日子;
3.SLB配置强转换是有顺序的,先https,再http。删除的时候也是,先http再https,有依赖关系。
4.现在微信小程序,IOS应用包括谷歌等都开始强制使用HTTPS了,很奇怪为啥要把【强制转发】开关给掩藏起来(即通过点击高级配置后才能看到),阿里云的产品说很多客户的网站还是HTTP访问的占了多数,好吧!You Say You Yes。