Web应用实践:如何配置一个完整链路的Web服务

2021-06-21 16:03:12 浏览数 (1)

背景

常常遇到用户的web服务配置了多个节点的情况下,配置无法访问,根本原因是用户没有理解http(https)的工作原理

问题说明

多个用户遇到配置好了Web服务,但是访问的时候提示400错误

简述http(s)工作原理

https抓包概览

https的工作原理网上资料比较多,这里就不赘述,本文通过抓取网络包的方式,介绍交互过程

https整体交互过程https整体交互过程

http交互细节

http请求格式http请求格式

发送的请求包中包含Host字段,用于匹配web服务器中(nginx为例)的server_name字段,同时也带了request相关参数、用户使用的客户端等信息

http跳转https

http跳转https回包格式http跳转https回包格式

http请求跳转到https时,会回复一个302的包,并带上Location字段说明需要跳转到的地址,http之上携带具体的页面内容。

收到跳转地址后,会跟新地址进行一轮

https客户端发送Client Hello

https无法像http一样携带一个明文的Host,因此需要增加扩展SNI,标识访问的域名,用于web服务器选择对应的server_name

完成https交互后,就开始数据的请求和返回。

如果需要完成Web服务的配置,需要理解访问过程中域名的发送方式

Web服务器配置

nginx默认https配置nginx默认https配置

服务器接收客户端发送过来的Host或者SNI的server_name字段,选择不同的服务器

常见架构及配置

架构

以下按照常见链路,对配置做说明

CDN配置

CDN配置说明CDN配置说明

1、源站地址可以填IP或者域名,如果填域名,也会直接解析成IP,不做其他作用,示例中的地址是下一级(WAF)配置完成后的CNAME,见下一章节。

2、回源域名:对应源站Web服务的server_name字段,如果是WAF,则是配置的域名

注意:

①如果有多个节点,每个节点的回源域名,都需要统一,这个也是用户配置过程中出错较多的

②CDN要增加WAF功能,可以使用SCDN,见链接https://console.cloud.tencent.com/cdn/scdn,这里不再赘述

WAF

WAF配置的时候会强制要求输入域名,回源原理与CDN相似,如果接入代理,需要勾选代理情况为是

CLB

CLB配置CLB配置

CLB需要创建监听器,然后添加转发规则,转发规则域名写waftest.xxx.com

API网关

API网关自定义域名API网关自定义域名

API网关需要配置自定义域名

COS

cos可以在cdn直接配置回源,也可以自定义,本次案例中使用自定义

COS自定义源站COS自定义源站

cos可以如果需要通过域名访问,需要自定义源站域名,操作如上图

高防包/高防IP

高防包可以直接选择绑定WAF

高防IP的配置原理相同,不再赘述。

总结

其实配置Web服务,理解了http需要发送Host或者server_name,配置的时候区分好回源地址和域名,基本上所有常见的Web服务配置都大同小异。

0 人点赞