网站页面访问流程
1.客户端输入网址信息,点击回车
2.客户端完成域名解析(DNS)
本机,DNS服务器,迭代解析
3.客户端 访问相应服务器IP地址 建立TCP三次握手
4.客户度 访问Web服务器 发送HTTP请求报文 多次
5.服务器端 相应客户请求 发送HTTP相应报文 多次
6.客户端 结束访问网站过程 完成TCP四次挥手
HTTP协议请求和相应过程
HTTP请求报文
- 请求行
- 请求方法
- GET - 读/看
- POST - 写/提交
- 请求信息
- index.html文件
- 请求协议
- HTTP 1.0 TCP短连接
- HTTP 1.1 TCP长连接
- HTTP 2.0 TCP短连接,带有优化,统一相应提高高并发访问效率
- 请求方法
- 请求头
- 请求主机信息
- 空行
- 隔离请求头与请求主体
- 请求主体
- GET方法没有请求主体
- POST方法有请求主体
HTTP响应报文
- 起始行
- 状态码 访问请求是否成功
- 响应头
- 空行
- 响应主体
HTTP资源信息
URL 统一资源定位符 www.baidu.com
URI 统一资源标识符 /index.heml
网站页面静态资源
html,jpg 要什么给什么
特点:
- 内容固定不变,搜索引擎容易收录
- 没有数据库支持,维护较为困难,交互性比较差
- 用户访问不做解析,直接返回,比较快
网站页面动态资源
php 要的信息经过解析查询得到后再发送
特点:
- 交互性强,支持数据库
- 资源页面会出现”?”,”&”符号,搜索引擎不容易收录
- 用户访问需要解析,不会直接返回,比较慢
伪静态资源
特点:
- 便于搜索引擎收录
- 有数据库支持,实现网页交互
常用的网站服务软件
处理静态资源的服务:
- apache软件: http: I /apache . org/
- nginx软件: http: I /nginx . org
处理动态资源的服务: - PHP: php .net 终端浏览器进行访问
- Tomcat (java) :利用移动端查看网页 安卓-java
- PYTHON : 开发难度比较低
网站评测指标
IP:根据用户IP地址数量进行统计 300-400万 一个星期
PV:页面访问量,参考值 700-800万 一个星期
UV:记录独立访客数量
cookie:标识用户信息,会保存到客户端本地
session:记录用户一些会话操作,记录用户登陆信息,保存在服务器端
网站的并发:网站服务器在单位时间内能够处理的最大连接数
网站页面的访问原理:
- 1.将域名进行解 www.yangyang.host — 47.95.5.171
- 2.建立TCP的连接(四层协议)
47.95.5.171 目标端口 8080 - 3.根据应用层HTTP协议发出请求
请求报文: hosts: bbs.yangyang.host - 4.没有相同域名的server主机,会找满足端口要求的第一个主机
显示主机的网站页面,所谓的端口匹配优先
企业中网站的安全访问配置
用户验证 是使用worker进程来进行验证的,所以密码文件的属主必须是nginx系统用户
nginx服务的企业应用(nginx模块)
- a 实现网站页面目录索引功能 (yum仓库搭建)
- b 实现网站访问别名功能 server name
- c 实现网站页面用户访问监控keepalived_timeout65s
- HTTP请求报文:请求头—connection: keepalived. . . /closed短连接
- HTTP响应报文:响应头—connection: closed 短连接
- VPN—无法访问外网/xshe11无法远程连接
- d 实现网站服务日志功能配置
- 错误日志:错误日志级别
- 访问日志:日志的格式信息自动化分析日志(ELK三个软件)
- e 根据用户访问uri进行匹配处理
location = xxx 精确匹配 优先级01
location ^~ xxx 优先匹配 优先级02
location ~ 区分大小写匹配 优先级03
location ~* 不区分大小写 优先级03
location uri 根据uri进行匹配 优先级03
location / 默认匹配 优先级最低
企业应用:京东网站location应用— 11.11 12.12 6.18节日 — 页面信息和平常不一样
有两个站点目录:
平常网站的站点目录 /html /j d-normal
- location / { root /html /jd-norma1 }
节日网站的站点目录/htm1 /jd- teshu - location /特殊{ root /html /jd-teshu }
网站页面跳转功能
rewrite 匹配地址(url uri) 跳转成什么地址(urluri)
return 301 http: I /xxxx I
Apache select 和Nginx epoll 的技术对比。
指标 | select | epolls |
---|---|---|
性能 | 随着连接数的增加性能急剧下降。处理成千上万并发连接数,性能很差 | 随着连接数的增加,性能基本上没有下降。处理成千上万并发连接时,性能很好 |
连接数 | 连接数有限制,处理的最大连接数不超过1024,如果要处理的连接数超过1024个,则需要修改FD_ SETSIZE宏,并重新编译 | 连接数无限制 |
内在处理机制 | 线性轮询 | 回调callback |
开发复杂性 | 低 | 中 |
http 服务
1.iptables端口转发
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-ports 80
Nginx 优化策略
1.绑定cpu与work进程
2.404跳转为302 防止流氓浏览器截获
3.缓存查找时发生错误的文件一类的信息
4.动静分离 php txt
5.压缩启用
6.代理服务器加缓存
7.keepalive 开启长连接 减小端口损耗
8.日志分离
nginx负载均衡企业应用
- a根据用户的访问uri信息进行负载均衡(动静分离的架构)
- b根据用户的user-agent信息进行负载均衡(手机和客户端显示不同页面)
集群灰度发布
- LVS 顶在最前面 性能优秀面对用户。通过DNS 来分配 不同IP的访问,分发到不同的集群
- LVS 之后是nginx调度集群 健康性检查,最大3W并发量
- nginx调度器后面是缓存服务器 varnish 这里使用根据原地址uri的哈希值来分配服务器 固定uri 固定缓存服务器
- 缓存服务器之后是集群Web服务器,提供服务。
- 集群Web服务器之后是动静分离服务器,利用动静分离机制来提供服务。
- 自定义错误404和5xx错误页,文本静态内容传输压缩
- 实现动静分离:动态资源存储一组服务器、图片资源存在一组服 务器、静态的文本类资源存储在一组服务器