当前位置: 首页 > news >正文

记录一次处理https监听不正确的过程




今天开发反馈在测试金山云设备的时候遇到了这样的一个现象:

1
2
3
4
5
6
wget https: //funchlscdn .lechange.cn /LCLR/2K02135PAK01979/0/0/20170726085033/dev_20170726085033_lpxh73ezzb92xxa8 .m3u8 
--2017-07-26 11:49:26--  https: //funchlscdn .lechange.cn /LCLR/2K02135PAK01979/0/0/20170726085033/dev_20170726085033_lpxh73ezzb92xxa8 .m3u8  
Resolving funchlscdn.lechange.cn... 120.92.158.134 
Connecting to funchlscdn.lechange.cn|120.92.158.134|:443... connected. 
OpenSSL: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol 
Unable to establish SSL connection.


爆“error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol”的错误,就是在当向只提供http的服务发送https请求造成的。


#ping funchlscdn.lechange.cn,获得了这个域名对应的IP之后,返回到金山云的控制台,发现这个IP是一个负载均衡,但是这个负载均衡配置的时候对80端口是http协议,而对443端口还是http协议,于是更改成https,重新测试之后,发现错误变成了这样:

1
2
3
4
5
6
[root@js-develop ~] # wget https://funchlscdn.lechange.cn/LCLR/2K02135PAK01979/0/0/20170726085033/dev_20170726085033_lpxh73ezzb92xxa8.m3u8 
--2017-07-26 16:08:15--  https: //funchlscdn .lechange.cn /LCLR/2K02135PAK01979/0/0/20170726085033/dev_20170726085033_lpxh73ezzb92xxa8 .m3u8
Resolving funchlscdn.lechange.cn... 120.92.158.134
Connecting to funchlscdn.lechange.cn|120.92.158.134|:443... connected.
HTTP request sent, awaiting response... 502 Bad Gateway
2017-07-26 16:08:15 ERROR 502: Bad Gateway.



在浏览器打开效果如图:

502 Bad Gateway  

The proxy server received an invalid response from an upstream server. 

  _____  

KSYUN ELB 1.0.0 



同时发现金山云负载均衡里对nginx的8000健康检查是“异常”。但是使用http访问却是可以的,效果如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@js-develop ~] # wget http://funchlscdn.lechange.cn/LCLR/2K02135PAK01979/0/0/20170726085033/dev_20170726085033_lpxh73ezzb92xxa8.m3u8 
--2017-07-26 15:31:55--  http: //funchlscdn .lechange.cn /LCLR/2K02135PAK01979/0/0/20170726085033/dev_20170726085033_lpxh73ezzb92xxa8 .m3u8
Resolving funchlscdn.lechange.cn... 120.92.158.134
Connecting to funchlscdn.lechange.cn|120.92.158.134|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: http: //120 .92.133.76:8090 /LCLR/2K02135PAK01979/0/0/20170726085033/dev_20170726085033_lpxh73ezzb92xxa8 .m3u8 [following]
--2017-07-26 15:31:55--  http: //120 .92.133.76:8090 /LCLR/2K02135PAK01979/0/0/20170726085033/dev_20170726085033_lpxh73ezzb92xxa8 .m3u8
Connecting to 120.92.133.76:8090... connected.
HTTP request sent, awaiting response... 200 OK
Length: 66 [application /x-mpegURL ]
Saving to: “dev_20170726085033_lpxh73ezzb92xxa8.m3u8”
100%[========================================================================================================================================================>] 66          --.-K /s    in  0s      
2017-07-26 15:31:55 (3.02 MB /s ) - “dev_20170726085033_lpxh73ezzb92xxa8.m3u8” saved [66 /66 ]




于是就叫来开发问一下http和https详细的流程,开发说在http里,设计路线如下:

1
http(80)->开发模块(9001)


而在https里,设计路线如下:

1
https(443)->nginx(8000)->开发模块(9001)


这时候就发现了问题,原来最早的时候金山云是没有配置https证书的,于是开发们就用nginx的8000端口去监听ssl这样达到https证书的效果,但是后来金山云控制台添加了https证书,就不再需要nginx去配置ssl证书了,再去https监听8000这一步也就是错误的了,于是在负载均衡那里改成了:

1
https(443)->开发模块(9001)



同时关闭了nginx,这时候再来测试一下https请求,就成功了!

wKioL1l4XyLBNt4RAAEsCPefYqk951.png


其实如果非要用nginx的ssl证书的话,那么的套路就是:开启nginx,但是在负载均衡那里使用tcp协议去监听nginx的8000端口,这样一样能达到效果。



最后的最后,如果您觉得本文对您升职加薪有帮助,那么请不吝赞助之手,刷一下下面的二维码,赞助本人继续写更多的博文!

wKioL1l16m3BMYDKAACPHEqd55Q687.jpg




 本文转自 苏幕遮618 51CTO博客,原文链接:http://blog.51cto.com/chenx1242/1951191

相关文章:

  • sed常见操作
  • 解读userenv的日志
  • pt-table-checksum和pt-table-sync的用法总结
  • 与oom-killer的亲密接触
  • python 中 sort() 用法
  • 参数FAST_START_MTTR_TARGET的理解
  • Mysql数据库的备份与还原
  • SUSE_NFS、Samba服务搭建
  • linux的页表为什么没有实现自映射
  • Zabbix使用SMTP发送邮件报警及定制邮件报警内容
  • Windows Mobile下C++取屏幕分辨率的方法
  • data pump (数据抽取)测试
  • Linux的Netfilter框架深度思考-对比Cisco的ACL-
  • ext3与ext4区别
  • mysql主主-配置数据同步
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • docker python 配置
  • ES6简单总结(搭配简单的讲解和小案例)
  • extjs4学习之配置
  • Flex布局到底解决了什么问题
  • Gradle 5.0 正式版发布
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • scala基础语法(二)
  • vue:响应原理
  • 多线程 start 和 run 方法到底有什么区别?
  • 工程优化暨babel升级小记
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 微信小程序--------语音识别(前端自己也能玩)
  • Spring Batch JSON 支持
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • ​2021半年盘点,不想你错过的重磅新书
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (2)(2.10) LTM telemetry
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (2)MFC+openGL单文档框架glFrame
  • (9)STL算法之逆转旋转
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (第61天)多租户架构(CDB/PDB)
  • (多级缓存)多级缓存
  • (二)windows配置JDK环境
  • (一)基于IDEA的JAVA基础12
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • (转)关于多人操作数据的处理策略
  • .a文件和.so文件
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .Net MVC + EF搭建学生管理系统
  • .NET 的静态构造函数是否线程安全?答案是肯定的!
  • .net 微服务 服务保护 自动重试 Polly
  • .NET运行机制