Nginx专栏—01.Nginx基础Http原理

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析DNS,个人版 1个月
简介: 1.Http协议概述

1.Http协议概述

HTTP全称HyperText Transfer Protocol中文名为超文本传输协议

1.什么是超文本?

包含有超链接(Link)和各种多媒体元素标记的文本。这些超文本文件彼此链接,形成网状(Web),因此又被称为网页(Web Page)。这些链接使用URL表示。最常见的超文本格式是超文本标记语言HTML。

html文件->包含各种各样的元素(URL链接)->形成web page简称web页面。

2.那什么是URL,URL简称统一资源定位符。那URL的组成部分是由协议, 域名:端口, 路径和文件名

image.pngimage.png

3.那超文本传输http协议是什么?

是一种按照URL指示,将超文本文档从一台主机(Web服务器)传输到另一台主机(浏览器)的应用层协议,以实现超链接的功能。

2.Http工作原理

image.png

3.Http协议版本

http1.0协议使用的是短连接:建立一次tcp的连接,发起一次http的请求,结束,tcp断开。
http1.1协议使用的是长连接:建立一次tcp的连接,发起多次http的请求,结束,tcp端口。

3.Http请求响应

1.http请求报文的方法

get     # 获得请求文件信息的数据内容(下载)
post    # 用户提交数据至服务器端存储(上传)
Request URL:http://10.0.0.7/index.html # 请求的URL
Request Method:GET                     # 请求的方法
Status Code:200 OK                     # 当前的状态
Remote Address:10.0.0.7:80             # 远程的主机

2.http返回状态码(Status-Code), 以3位数字组成

200     # 成功请求
301     # 永久重定向(redirect) 
302     # 临时重定向(redirect) 
304     # 浏览器缓存
403     # 请求不到首页或权限被拒绝
404     # 请求的资源不存在
500     # 服务器内部错误,程序代码错误
502     # 找不到后端的资源
504     # 请求超时

3.用户访问网站携带的参数,以及服务端返回的参数

#1.概况
Request URL: http://10.0.0.7/index.html         # 请求的URL地址
Request Method: GET                             # 请求的方法(获取)
Status Code: 304 Not Modified                   # 返回的状态
Remote Address: 10.0.0.7:80                     # 请求的地址
#2.客户端请求的头部信息
Accept: text/html,                              # 请求的类型
Accept-Encoding: gzip, deflate                  # 是否进行压缩
Accept-Language: zh-CN,zh;q=0.9                 # 请求的语言
Cache-Control: max-age=0                        # 缓存
Connection: keep-alive                          # TCP长连接
Host: www.baidu.com                         # 请求的域名
If-Modified-Since: Fri, 04 May 2018 08:13:44 GMT# 修改的时间
User-Agent: Mozilla/5.0                         # 请求浏览器的工具
"=== 请求一个空行 ==="
"=== 请求内容主体 ==="
#3.服务端响应的头部信息
HTTP/1.1 304 Not Modified                       # 返回服务器的http协议,状态码
Date: Fri, 14 Sep 2018 09:14:28 GMT             # 返回服务器的时间
Server: Apache/2.4.6 (CentOS) PHP/5.4.16        # 返回服务器使用的软件(Apache php)
Connection: Keep-Alive                          # TCP长连接
Keep-Alive: timeout=5, max=100                  # 长连接的超时时间
"=== 返回一个空行 ==="
"=== 返回内容主体 ==="

4.Http相关术语pv、ip、uv 假设公司有一座大厦,大厦有100人,每个人有一台电脑和一部手机,上网都是通过nat转换出口,每个人点击网站2次, 请问对应的pv,uv,ip分别是多少
PV:页面浏览量, 400
uv:独立的客户, 200
ip:独立IP, 1个
6.Http访问流程
1.http协议原理总结

1.用户输入域名->浏览器跳转->浏览器缓存->Hosts文件->DNS解析( 递归查询 | 迭代查询 )
    客户端向服务端发起查询->递归查询
    服务端向服务端发起查询->迭代查询
2.由浏览器向服务端发起TCP连接(三次握手)
    客户端  -->请求包连接-syn=1 seq=x           服务端
    服务端  -->向应客户端syn=1 ack=x+1 seq=y    客户端
    客户端  -->建立连接  ack=y+1 seq=x+1        服务端
3.客户端发起http请求:
    1.请求的方法是什么: Get 获取
    2.请求的Host主机是: www.baidu.com
    3.请求的资源是什么: /index.html
    4.请求的端口是什么: 默认http是80  https 443
    5.请求携带的参数是: 属性(请求的类型、压缩、认证、浏览器信息、等等)
    6.请求最后的空行
4.服务端响应的内容是
    1.服务端响应使用的WEB服务软件
    2.服务端响应请求文件的类型
    3.服务端响应请求的文件是否进行压缩
    4.服务端响应请求的主机是否进行长连接
5.客户端向服务端发起TCP断开(四次挥手)
    客户端  --> 断开请求 fin=1 seq=x           -->      服务端
    服务端  --> 响应断开 fin=1 ack=x+1 seq=y   -->      客户端
    服务端  --> 断开连接 fin=1 ack=x+1 seq=z   -->      客户端
    客户端  --> 确认断开 fin=1 ack=z+1 seq=sj  -->      服务端

2.用户访问网站集群架构流程

1.客户端发起http请求,请求会先抵达前端的防火墙
2.防火墙识别用户身份,正常的请求通过内部交换机通过tcp连接后端的负载均衡,传递用户的http请求
3.负载接收到请求,会根据请求的内容进行下发任务,通过tcp连接后端的web,转发发用户的http请求
4.web接收到用户的http请求后,会根据用户请求的内容进行解析,解析分为如下:
    静态请求:web直接返回给负载均衡->防火墙->用户
    动态请求:web向后端的动态程序建立TCP连接,将用户的动态http请求传递至动态程序->由动态程序进行解析
5.动态程序在解析的过程中,如果碰到查询数据库请求,则优先与缓存建立tcp连接,并发起数据查询操作。
6.如果缓存没有对应的数据,动态程序再次向数据库建立tcp连接,并发起查询操作。
7.最后数据由, 数据库->动态程序->缓存->web服务->负载均衡->防火墙->用户。


相关文章
|
2天前
|
负载均衡 网络协议 关系型数据库
一口把LVS、Nginx及HAProxy工作原理讲清楚了。(附图)
一口把LVS、Nginx及HAProxy工作原理讲清楚了。(附图)
|
8天前
|
缓存 应用服务中间件 API
Nginx七层(应用层)反向代理:HTTP反向代理proxy_pass篇(三)
Nginx七层(应用层)反向代理:HTTP反向代理proxy_pass篇(三)
15 3
|
8天前
|
安全 算法 网络协议
【在Linux世界中追寻伟大的One Piece】HTTPS协议原理
【在Linux世界中追寻伟大的One Piece】HTTPS协议原理
21 2
|
8天前
|
缓存 安全 应用服务中间件
Nginx七层(应用层)反向代理:HTTP反向代理proxy_pass篇(二)
Nginx七层(应用层)反向代理:HTTP反向代理proxy_pass篇(二)
14 1
|
8天前
|
运维 算法 应用服务中间件
运维系列.Nginx中使用HTTP压缩功能(一)
运维系列.Nginx中使用HTTP压缩功能(一)
13 1
|
12天前
|
缓存 应用服务中间件 nginx
[nginx]定制http头信息
[nginx]定制http头信息
|
20天前
|
缓存 网络协议 算法
(二)Java网络编程之爆肝HTTP、HTTPS、TLS协议及对称与非对称加密原理!
作为一名程序员,尤其是Java程序员,那必须得了解并掌握HTTP/HTTPS相关知识。因为在如今计算机网络通信中,HTTP协议的作用功不可没,无论是日常上网追剧、冲���、亦或是接口开发、调用等,必然存在HTTP的“影子”在内。尤其对于WEB开发者而言,HTTP几乎是每天会打交道的东西。
45 10
|
4天前
|
安全 Nacos 数据安全/隐私保护
【技术干货】破解Nacos安全隐患:连接用户名与密码明文传输!掌握HTTPS、JWT与OAuth2.0加密秘籍,打造坚不可摧的微服务注册与配置中心!从原理到实践,全方位解析如何构建安全防护体系,让您从此告别数据泄露风险!
【8月更文挑战第15天】Nacos是一款广受好评的微服务注册与配置中心,但其连接用户名和密码的明文传输成为安全隐患。本文探讨加密策略提升安全性。首先介绍明文传输风险,随后对比三种加密方案:HTTPS简化数据保护;JWT令牌减少凭证传输,适配分布式环境;OAuth2.0增强安全,支持多授权模式。每种方案各有千秋,开发者需根据具体需求选择最佳实践,确保服务安全稳定运行。
19 0
|
6天前
|
域名解析 缓存 负载均衡
深度解析Nginx正向代理的原理与实现
Nginx虽然主要被用作反向代理,但也可以通过一些特殊配置用作正向代理。虽然不是它的主流用途,但它仍能以其高性能和高稳定性为用户提供代理服务。不过,出于安全性和匿名性的考虑,在使用它作为正向代理时须谨慎配置,并根据实际需求做出调整。
21 0
|
8天前
|
负载均衡 应用服务中间件 网络安全
Nginx七层(应用层)反向代理:HTTP反向代理proxy_pass篇(一)
Nginx七层(应用层)反向代理:HTTP反向代理proxy_pass篇(一)
16 0