网络模型就是 OSI(Open System Interconnect),意思为开放网络互联,是由国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)共同出版的,他是一种网络互联模型,也是一种规范。 网络模型分为七层,也就是当用户发起请求到服务器接收,会历经七道工序,或者说用户利用互联网发送消息给另一个用户,也会历经七道工序。这七层可以分为如下: 以上七层每层可以与上下相邻层进行通信。每一层都是非常复杂的,我们不在这里深究,我们以举例的形式来阐述每一层是干嘛的。 应用层: 这是面向用户的,最靠近用户,为了让用户和计算机交互,在计算机里会有很多软件,比如eclipse,idea,qq,nginx等,这些都是应用软件,用户可以通过这些应用软件和计算机交互,交互的过程其实就是接口的调用,应用层为用户提供了交互的接口,以此为用户提供交互服务。那么在这一层最常见的协议有:HTTP,HTTPS,FTP,SMTP,POP3等。Nginx在本层,为七层负载均衡。 表示层: 该层提供数据格式编码以及加密功能,确保请求端的数据能被响应端的应用层识别。 会话层: 会话可以理解为session,请求发送到接受响应的这个过程之间存在会话,会话层就充当了这一过程的管理者,从创建会话到维护会话最后销毁会话。 传输层: 该层建立端到端的连接,他提供了数据传输服务,在传输层通信会涉及到端口号,本层常见的协议为TCP、UDP,LVS就是在传输层,也就是四层负载均衡。 网络层: 网络通信的时候必须要有本机IP和对方的IP,请求端和响应端都会有自己的IP的,IP就相当于你家地址门牌号,在网络上云服务器有固定的公网IP,普通计算机也有,只不过是动态IP,运营商每天会分配不同的IP给你的计算机。所以网络层也能称之为IP层,IP是互联网的基础根本。能提供IP分配的设备则为路由器或交换机。 数据链路层: 这一层会提供计算机MAC地址,通信的时候会携带,为了确保请求投递正确,所以他会验证检测MAC地址,以确保请求响应的可靠性。 物理层: 端到端请求响应过程中的媒介,物理介质,比如网线、中继器等等设备,都是你在端到端交互过程中不可缺少的基础设备。 以上就是七层网络模型,大家理解其意义即可。需要注意的是Nginx存在于第七层,属于七层负载均衡;而第四层会有LVS,属于四层负载均衡。 负载均衡:当有大量的并发请求来到服务器的时候,把这些请求分配到多台计算机节点上,让更多的节点来处理请求和响应,来大大的减少用户的等待时间 注意:该参数不能使用在hash和random load balancing中。如果在 upstream 中只有一台 server,则该参数失效。 假设目前设置如下: ip_hash:通过对ip进行hash后按照服务器个数取模,然后分配到不同的服务器中,稳定的情况下可以保证每一个ip每次都请求到同一台服务器上,但是有一个问题:当增加或移除服务器时会导致所有的用户ip都要在重新计算分配的服务器。 跨域资源共享(CORS) 是一种机制,它使用额外的 HTTP 头来告诉浏览器 让运行在一个 origin (domain) 上的Web应用被准许访问来自不同源服务器上的指定的资源。当一个资源从与该资源本身所在的服务器不同的域、协议或端口请求一个资源时,资源会发起一个跨域 HTTP 请求。 目前基本上主流有三种解决方式:JsonP,SpringBoot,Nginx,我们今天来说说Nginx是如何解决跨域问题的 在server模块中添加下面的信息 加速用户访问,提升单个用户(浏览器访问者)体验,缓存在本地 缓存在nginx端,提升所有访问到nginx这一端的用户 Nginx的主要模块构成
1.OSI网络模型
层级
名称
说明
第七层
应用层
与用户行为交互
第六层
表示层
定义数据格式以及数据加密
第五层
会话层
创建、管理以及销毁会话
第四层
传输层
创建、管理请求端到响应端(端到端)的连接
第三层
网络层
请求端的IP地址
第二层
数据链路层
提供介质访问与链路管理
第一层
物理层
传输介质,物理媒介
举例:我要寄一封信给远在天边的老外LiLei,我会打开快递软件下单,这个时候我是用户,快递软件就是应用服务,是建立在计算机上的,提供给用户交互的一种服务或称之为手段。
举例:我写中文给LiLei,他看不懂,这个时候我就会使用翻译软件把中文翻译成英文,随后信中涉及到一些比较隐私的信息我会加密一下,这个时候翻译软件和加密器就充当了表示层的作用,他用于显示用户能够识别的内容。
举例:我每次写信给LiLei都会记录在一个小本本上,寄信时间日期,收信时间日期,这本小本本上存有每次通信记录,这个小本本就相当于是一个会话的管理者。又或者说,我们平时在打电话,首先需要拨打电话,这是建立会话,对方接听电话,此时正在通话(维持并管理会话),通话结束后会话销毁,那么这也是一次会话的生命周期。
举例:我和LiLei通信过程中会借助快递公司,快递公司会分配快递员取件和寄件,那么这个快递员则充当传输层的作用。
举:对于拥有固定IP的云服务来说,他们都是由腾讯云、阿里云等这样的供应商提供的,他们为云服务器提供固定ip;电信、移动、联调等运营商为你的计算机动态分配ip,每天都不同;则这些供应商和运营商都是网络层。同理,快递员由物流公司分配和管理,那么物流公司就是网络层咯。
举例:快递员在投递派送的时候,他(或客服)会预先提前打电话给你,确认你家地址对不对、有没有人、货到付款有没有准备好钱等等,这个时候快递员(或客服)就充当了数据链路层的职责。
举例:快递员在投递的过程中,你写的信会历经一些交通运输工具,比如首先通过飞机运输到国外,在海关统一拿到信以后会通过汽车运输到LiLei所在城市的物流集散地,最后快递员通过三轮电频车寄到LiLei家里,这个时候,飞机、汽车、三轮电瓶车都是物理层的媒介。
2.Nginx的集群负载均衡解析
2.1 负载均衡分类
2.2 Nginx配置集群
# 配置上游服务器模块 upstream tomcats{ server 192.168.1.173:8080; server 192.168.1.174:8080; server 192.168.1.175:8080; } server { listen 80; server_name ww.tomcats.com; location /{ #引用上游服务器块 proxy_pass https://tomcats; } }
2.3 Nginx 负载均衡策略
方式名
分配方式
轮询(默认方式)
平均分配
权重
按照比重分配
ip_hash
依据ip分配
least_conn
最少连接方式
fair
响应时间
url_hash
依据URL分配方式
upstream tomcats{ server 192.168.1.173:8080 weight=1; server 192.168.1.174:8080 weight=2; server 192.168.1.175:8080 weight=3; }
upstream tomcats{ ip_hash server 192.168.1.173:8080; server 192.168.1.174:8080; server 192.168.1.175:8080; }
upstream tomcats{ least_conn; server 192.168.1.173:8080; server 192.168.1.174:8080; server 192.168.1.175:8080; }
upstream tomcats{ fair server 192.168.1.173:8080; server 192.168.1.174:8080; server 192.168.1.175:8080; }
upstream tomcats{ hash $request_uri; server 192.168.1.173:8080; server 192.168.1.174:8080; server 192.168.1.175:8080; }
2.4 upstream指令参数
测试参考配置如下:# worker进程设置1个,便于测试观察成功的连接数 worker_processes 1; upstream tomcats { server 192.168.1.173:8080 max_conns=2; server 192.168.1.174:8080 max_conns=2; server 192.168.1.175:8080 max_conns=2; }
注:商业版,需要付费
配置参考如下:upstream tomcats { server 192.168.1.173:8080 weight=6 slow_start=60s; # server 192.168.1.190:8080; server 192.168.1.174:8080 weight=2; server 192.168.1.175:8080 weight=2; }
配置参考如下:upstream tomcats { server 192.168.1.173:8080 down; server 192.168.1.174:8080 weight=1; server 192.168.1.175:8080 weight=1; }
配置参考如下:upstream tomcats { server 192.168.1.173:8080 backup; server 192.168.1.174:8080 weight=1; server 192.168.1.175:8080 weight=1; }
max_fails=2 fail_timeout=15s
则代表在15秒内请求某一server失败达到2次后,则认为该server已经挂了或者宕机了,随后再过15秒,这15秒内不会有新的请求到达刚刚挂掉的节点上,而是会请求到正常运作的server,15秒后会再有新请求尝试连接挂掉的server,如果还是失败,重复上一过程,直到恢复。
keepalived: 设置长连接处理的数量
proxy_http_version:设置长连接http版本为1.1
proxy_set_header:清除connection header 信息upstream tomcats { # server 192.168.1.173:8080 max_fails=2 fail_timeout=1s; # server 192.168.1.174:8080 weight=1; # server 192.168.1.175:8080 weight=1; keepalive 32; } server { listen 80; server_name www.tomcats.com; location / { proxy_pass https://tomcats; proxy_http_version 1.1; proxy_set_header Connection ""; } }
3.ip_hash算法与一致性hash算法
一致性hash算法:将0到2的32次方减一的数做成一个环,将用户和节点都放到这个环上,把用户ip顺时针放到离他最近的一台服务器上,这样增加和减少服务器之后影响到一部分用户,而不会影响到所有用户
4.Nginx的跨域问题
4.1 跨域资源共享(CORS)
CORS需要浏览器和服务器同时支持,才可以实现跨域请求,目前几乎所有浏览器都支持CORS,IE则不能低于IE10。CORS的整个过程都由浏览器自动完成,前端无需做任何设置,跟平时发送ajax请求并无差异。so,实现CORS的关键在于服务器,只要服务器实现CORS接口,就可以实现跨域通信。4.2 如何解决跨域问题
4.3 Nginx通过配置解决跨域问题
server { listen 88; server_name localhost; #允许跨域请求的域,*代表所有 add_header 'Access-Control-Allow-Origin' *; #允许带上cookie请求 add_header 'Access-Control-Allow-Credentials' 'true'; #允许请求的方法,比如 GET/POST/PUT/DELETE add_header 'Access-Control-Allow-Methods' *; #允许请求的header add_header 'Access-Control-Allow-Headers' *; location / { root html; index index.html index.htm; } }
5.缓存
5.1浏览器缓存
location /{ alias /home/; # expires 10s; 缓存10秒 # expires @22h30m;每日22点30分清除缓存 # expires -1h;缓存提前过期 # expires epoch;不设置缓存 # expires off;nginx关闭缓存,不添加头信息 expires max;最大缓存时间 }
5.2 Nginx反向代理缓存
提升访问上游(upstream)服务器的速度
用户访问仍然会产生请求流量# proxy_cache_path 设置缓存目录 # keys_zone 设置共享内存以及占用空间大小 # max_size 设置缓存大小 # inactive 超过此时间则被清理 # use_temp_path 临时目录,使用后会影响nginx性能 proxy_cache_path /usr/local/nginx/upstream_cache keys_zone=mycache:5m max_size=1g inactive=1m use_temp_path=off; location / { proxy_pass https://tomcats; # 启用缓存,和keys_zone一致 proxy_cache mycache; # 针对200和304状态码缓存时间为8小时 proxy_cache_valid 200 304 8h; }
6.Nginx的模块化设计解析
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算