nginx内核原理(nginx基本原理)
nginx基本原理
Nginx在不依赖第三方模块的前期下,主要的功能有:
①、正向代理
正向代理,是在用户端的。比如需要访问某些国外网站,我们可能需要购买vpn。并且vpn是在我们的用户浏览器端设置的(并不是在远端的服务器设置),浏览器先访问vpn地址,vpn地址转发请求,并最后将请求结果原路返回来。
②、反向代理
客户端向服务器发送请求时,会首先经过 Nginx 服务器,由服务器将请求分发到相应的 WEB 服务器。正向代理是代理客户端,而反向代理则是代理服务器,Nginx 在提供反向代理服务方面,通过使用正则表达式进行相关配置,采取不同的转发策略,配置相当灵活,而且在配置后端转发请求时,完全不用关心网络环境如何,可以指定任意的IP地址和端口号,或其他类型的连接、请求等。
③、负载均衡
当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况.
④、动静分离
在Web开发中,通常来说,动态资源其实就是指那些后台资源,而静态资源就是指HTML,JavaScript,CSS,img等文件。一般来说,都需要将动态资源和静态资源分开,将静态资源部署在Nginx上,当一个请求来的时候,如果是静态资源的请求,就直接到nginx配置的静态资源目录下面获取资源,如果是动态资源的请求,nginx利用反向代理的原理,把请求转发给后台应用去处理,从而实现动静分离。在使用前后端分离之后,可以很大程度的提升静态资源的访问速度,同时在开过程中也可以让前后端开发并行可以有效的提高开发时间,也可以有些的减少联调时间。
nginx基础知识
一、设备
网线的线序接法,百兆和千兆网线,光纤线,思科路由,华为路由,交换机什么的,包括一些VLAN组建,交换机和路由器之间的学习,一般我建议学习到CCNP就够了,计算机硬件了解,一般你自己DIY过电脑,一般都清楚明白。了解服务器和普通PC的区别,服务器 分别是 1U 2U 4U,然后就是找托管的托管服务器,费用根据机房线路多少,带宽,地域而决定,注册域名,备案最好也懂。
二、数据链路层
关乎就是MAC地址的走向,交换机学习,局域网的东西。
三、网络层
了解中国互联网几大ISP,电信,移动,联通,教育网互相连接的弊端,掌握tcpdump,winshark,的抓包软件,TCP/IP协议,当然也有很多路由器的协议。
四、缓存层
几个开源缓存的软件
squid
varnish
Traffic Server
五、系统层
首先是三大系统,Linux,Unix,Windows,市面上一般就用着三个做服务器系统,Linux 是现今互联网的主流所以一般着力学习这个,Windows是Windows 2008 R2,Unix 就是AIX ,Free BSD,这里并无歧视平台的原因,因为win本身的域控管理也十分强大,但由于win的版权问题,费用高昂,大部分都会侧重于Linux的学习,互联网也倾向这个。AIX和Free BSD这个其实学习了Linux,都差不多,只有些不同,有兴趣的朋友可以去学习一下Linux 和 Uninx之间的历史。
六、数据库层
数据库我自己一般倾向于的Mysql,不过也少有接触Oracle.主要精通一门,估计其它也不难,至于为何选择mysql是因为应用它可以用,深入学习可以了解源码。也有非关系数据库moogoDB
七、容器层
Tomcat,Nginx,Apache,redis,IIS这里没什么好说的了,各自的语言自己选择各种容器来跑应用。
nginx工作原理
nginx keepalived工作在IP/TCP协议栈的IP层,TCP层,及应用层,其工作原理基于VRRP协议。
网络层(layer 3):Keepalived会定期向服务器群中的服务器发送一个ICMP的数据包,(既我们平时用的Ping程序), 如果发现某台服务的IP地址没有激活,Keepalived便报告这台服务器失效,并将它从服务器群中剔除。
nginx工作原理图
Nginx负载均衡的原理是根据请求的负载大小及服务器的可用性,将客户端请求分发到多个服务器上进行处理,以提高资源利用率和系统的可用性。具体来说,Nginx作为反向代理服务器,通过配置upstream模块进行负载均衡,根据配置的算法(如轮询、权重、IP hash等)将请求分发到指定的服务器上。同时,Nginx还可以实现基于健康检查机制的动态负载均衡,通过定期检查服务器的可用性,将请求分发到可用的服务器上,提高系统的可用性。此外,Nginx还支持对HTTP请求进行流量控制和限速,以及基于HTTP协议的会话保持等功能,为高负载、高并发情况下的服务提供高效、稳定的解决方案。
nginx工作原理及配置文件的参数使用
1、作为Web服务器,Nginx处理静态文件、索引文件,自动索引的效率非常高
2、作为代理服务器,Nginx可以实现无缓存的反向代理加速,提高网站运行速度
3、作为负载均衡服务器,Nginx既可以在内部直接支持Rails和PHP,也可以支持HTTP代理服务器对外进行服务,同时还支持简单的容错和利用算法进行负载均衡
4、在性能方面,Nginx是专门为性能优化而开发的,实现上非常注重效率。它采用内核Poll模型,可以支持更多的并发连接,最大可以支持对5万个并发连接数的响应,而且只占用很低的内存资源
5、在稳定性方面,Nginx采取了分阶段资源分配技术,使得CPU与内存的占用率非常低。Nginx官方表示,Nginx保持1万个没有活动的连接,而这些连接只占用2.5MB内存,因此,类似DOS这样的攻击对Nginx来说基本上是没有任何作用的
6、在高可用性方面,Nginx支持热部署,启动速度特别迅速,因此可以在不间断服务的情况下,对软件版本或者配置进行升级,即使运行数月也无需重新启动,几乎可以做到7x24小时不间断地运行
7、内置的健康检查功能:如果有一个服务器宕机,会做一个健康检查,再发送的请求就不会发送到宕机的服务器了。重新将请求提交到其他的节点上。
nginx的理解
轮询(Polling)是一种CPU决策如何提供周边设备服务的方式,又称"程序输入"(Programmed I/O)。轮询法的概念是:由CPU定时发出询问,依询问每一个周边设备是否需要其他服务,由即给予服务,服务结束后在问一个周边,接着不断周而复始。
通俗来讲,轮询是为了负载均衡让不是一个的服务器一起工作,有点像是个组合一起出动,提高做事效率,然而也要合理分工(比如种树,有挖坑的,有放树的,有埋坑的,有浇水的分工合作缺一不可,也可以一个人把这些都做了,那就有些累了。有资源可用为什么不用呢是吧。)我是这样理解的也不知道合不合理,理解尚浅,欢迎知道的大神指点一二。
nginx原理和架构
web的工作架构:
1、浏览器的作用:用户提交请求给服务器,将服务器返回的响应解析出来
2、web服务器:接受用户请求,并给用户做出响应,Windows下有IIS ,Linux下有Apache、Nginx
3、web应用:用php、jsp、asp、aspx等开发语言开发一个web应用程序(博客、购物网站等)。运行在服务器上
4、数据库:存储数据,数据库有一个接口,在应用程序中指定连接数据库的账户密码
5、中间件:举个例子,在Linux环境下,用Apache作为服务器想要运行一个Java程序,还需要Tomcat环境的支持,Tomcat就是一个中间件。目前Apache等服务器和中间件的区分越来越少,可以广泛理解为中间件是Apache、IIS、Nginx、Tomcat、Jboss的统称。
本网站文章仅供交流学习 ,不作为商用, 版权归属原作者,部分文章推送时未能及时与原作者取得联系,若来源标注错误或侵犯到您的权益烦请告知,我们将立即删除.