十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
建站服务器
创新互联公司长期为上千客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为东兴企业提供专业的成都网站设计、成都网站建设,东兴网站改版等技术服务。拥有10年丰富建站经验和众多成功案例,为您定制开发。今天开发反馈在测试金山云设备的时候遇到了这样的一个现象:
wgethttps://funchlsCDN.lechange.cn/LCLR/2K02135PAK01979/0/0/20170726085033/dev_20170726085033_lpxh73ezzb92xxa8.m3u8 --2017-07-2611:49:26--https://funchlscdn.lechange.cn/LCLR/2K02135PAK01979/0/0/20170726085033/dev_20170726085033_lpxh73ezzb92xxa8.m3u8 Resolvingfunchlscdn.lechange.cn...120.92.158.134 Connectingtofunchlscdn.lechange.cn|120.92.158.134|:443...connected. OpenSSL:error:140770FC:SSLroutines:SSL23_GET_SERVER_HELLO:unknownprotocol UnabletoestablishSSLconnection.
爆“error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol”的错误,就是在当向只提供http的服务发送https请求造成的。
#ping funchlscdn.lechange.cn,获得了这个域名对应的IP之后,返回到金山云的控制台,发现这个IP是一个负载均衡,但是这个负载均衡配置的时候对80端口是http协议,而对443端口还是http协议,于是更改成https,重新测试之后,发现错误变成了这样:
[root@js-develop~]#wgethttps://funchlscdn.lechange.cn/LCLR/2K02135PAK01979/0/0/20170726085033/dev_20170726085033_lpxh73ezzb92xxa8.m3u8 --2017-07-2616:08:15--https://funchlscdn.lechange.cn/LCLR/2K02135PAK01979/0/0/20170726085033/dev_20170726085033_lpxh73ezzb92xxa8.m3u8 Resolvingfunchlscdn.lechange.cn...120.92.158.134 Connectingtofunchlscdn.lechange.cn|120.92.158.134|:443...connected. HTTPrequestsent,awaitingresponse...502BadGateway 2017-07-2616:08:15ERROR502:BadGateway.
在浏览器打开效果如图:
502 Bad Gateway
The proxy server received an invalid response from an upstream server.
_____
KSYUN ELB 1.0.0
同时发现金山云负载均衡里对nginx的8000健康检查是“异常”。但是使用http访问却是可以的,效果如下:
[root@js-develop~]#wgethttp://funchlscdn.lechange.cn/LCLR/2K02135PAK01979/0/0/20170726085033/dev_20170726085033_lpxh73ezzb92xxa8.m3u8 --2017-07-2615:31:55--http://funchlscdn.lechange.cn/LCLR/2K02135PAK01979/0/0/20170726085033/dev_20170726085033_lpxh73ezzb92xxa8.m3u8 Resolvingfunchlscdn.lechange.cn...120.92.158.134 Connectingtofunchlscdn.lechange.cn|120.92.158.134|:80...connected. HTTPrequestsent,awaitingresponse...302Found Location:http://120.92.133.76:8090/LCLR/2K02135PAK01979/0/0/20170726085033/dev_20170726085033_lpxh73ezzb92xxa8.m3u8[following] --2017-07-2615:31:55--http://120.92.133.76:8090/LCLR/2K02135PAK01979/0/0/20170726085033/dev_20170726085033_lpxh73ezzb92xxa8.m3u8 Connectingto120.92.133.76:8090...connected. HTTPrequestsent,awaitingresponse...200OK Length:66[application/x-mpegURL] Savingto:“dev_20170726085033_lpxh73ezzb92xxa8.m3u8” 100%[========================================================================================================================================================>]66--.-K/sin0s 2017-07-2615:31:55(3.02MB/s)-“dev_20170726085033_lpxh73ezzb92xxa8.m3u8”saved[66/66]
于是就叫来开发问一下http和https详细的流程,开发说在http里,设计路线如下:
http(80)->开发模块(9001)
而在https里,设计路线如下:
https(443)->nginx(8000)->开发模块(9001)
这时候就发现了问题,原来最早的时候金山云是没有配置https证书的,于是开发们就用nginx的8000端口去监听ssl这样达到https证书的效果,但是后来金山云控制台添加了https证书,就不再需要nginx去配置SSL证书了,再去https监听8000这一步也就是错误的了,于是在负载均衡那里改成了:
https(443)->开发模块(9001)
同时关闭了nginx,这时候再来测试一下https请求,就成功了!
其实如果非要用nginx的ssl证书的话,那么的套路就是:开启nginx,但是在负载均衡那里使用tcp协议去监听nginx的8000端口,这样一样能达到效果。
最后的最后,如果您觉得本文对您升职加薪有帮助,那么请不吝赞助之手,刷一下下面的二维码,赞助本人继续写更多的博文!