- 浏览器输入网站域名,发生了如下
- DNS解析
- 与Web服务器建立TCP连接
- SSL/TLS握手(仅在HTTPS下)
- 客户端向服务器发起请求说明自己支持的加密方式信息等
- 服务器发送数字证书给客户端
- 证书持有人信息、公钥、有效期、签名算法、颁发者信息、扩展字段
- 客户端通过CA(认证机构)验证证书
- 协商生成对阵秘钥
- 客户端生成随机数作为会话密钥
- 会话密钥通过公有密钥加密,而后传送给服务器
- 同时,服务端生成随机数,并用公钥加密发送给客户端
- 双方拼接随机数对组成 生成对称秘钥的信息
- 数据交换
- 断开连接
- 发送HTTP请求
- WEb服务器处理并返回HTTP响应
- 浏览渲染页面
- 断开与Web服务器的连接
域名系统
- Host管理
- 手动管理 主机到IP映射
- /etc/hosts
- 域名系统替换hosts文件
- 域名购买
- 域名备案
- 修改配置
- 清空/etc/hosts
- 配置/etc/resolv.conf中nameseservers为公共DNS迁移原配置
- 开放外部用户访问
- 租一个外网ip,用于外部用户访问
- 将域名解析到外网IP
- 将IP绑定到一台固定的主机上
- 发布公网route
- 自建DNS服务器
- 从公有云托管-->自建DNS
- 构建权威DNS、LocalDNS
HTTPS协议
- HTTP明文传输,存在安全问题
- 加密
- 对称
- 加密双方使用相同的密钥进行加密
- 非对称
- 分为公钥和私钥,公钥给对方用于加密数据,自己用私钥解密数据
- 对称
- 公钥可信吗?会不会被劫持
- 公钥是可信的,其有CA签名认证,使用数字证书可以确保公钥来自一个可信的第三方
- 如果出现公钥劫持或伪造,可能出现安全问题。为此HTTPS提供了更高级的安全连接
全站加速
- 静态加速--缓存
- CDN
- 动态加速
- 针对POST等非静态请求不能在用户边缘缓存
- 智能路由技术,选择最优路线/直连路由
四层负载均衡
- 基于IP+端口,利用某算法将报文转发给某个后端服务器,实现复杂均衡的落在后端服务器上
- 仅能转发TCP/IP协议、UDP协议、通常用来转发端口
- 解决七层负载均衡模型端口限制问题
- 大场景下通常会在七层负载模型前面添加四层负载模型
- 功能
- 解耦
- NAT
- 防攻击
- 调度算法
- RR轮询
- 加权RR轮询
- 最小连接
- 五元组hash
- 一致性hash
- 大部分通过DPDK实现
- 纯用户态协议栈,kernel bypass,消除协议瓶颈
- 无缓存、零拷贝、大页内存
- 针对四层数据包转发,小包转发可到限速
七层负载均衡
Nginx
- 最灵活的高性能Web Server,应用最广的七层反向代理
- 模块化设计,较好的扩展性和可靠性
- 基于Master/worker架构设计
- 支持热部署,在线升级
- 不停机更新配置文件、日志文件、更新服务器二进制
- 较低的内存消耗
- 事件驱动
- 一个进程/线程处理多个连接/请求异步非阻塞、减少OS进程切换
- 调优
- 优化内核网络参数
- 提升cpu使用效率
- 合适worker进程数=cpu核数
- cpu亲和,每个worker程绑定一个cpu核,提升缓存命中率
- 减少cpu消耗
- 提升网络效率
- 连接服用
- 使用cache
- gzip压缩
- 开启proxy_buffering
这里主要是有关后端部署以及负载均衡的相关内容
大场景下通常会在七层负载模型前面添加四层负载模型