北京网站seo优化排名公司,广州shopify代建站,什么职位做网站,市场营销策略的概念NGINX是什么#xff1f;
NGINX是一款由俄罗斯人伊戈尔赛索耶夫使用C语言开发的、支持热部署的、轻量级的WEB服务器/反向代理服务器/电子邮件代理服务器#xff0c;因为占用内存较少#xff0c;启动极快#xff0c;高并发能力强#xff0c;所以在互联网项目中广泛应用。可…NGINX是什么
NGINX是一款由俄罗斯人伊戈尔·赛索耶夫使用C语言开发的、支持热部署的、轻量级的WEB服务器/反向代理服务器/电子邮件代理服务器因为占用内存较少启动极快高并发能力强所以在互联网项目中广泛应用。可以在 UNIX、GNU/Linux、BSD、Mac OS X、Solaris以及 Microsoft Windows 等操作系统中运行。
官网NGINX官方网站中文NGINX中文网站
NGINX可以干什么
NGINX可以作为静态页面的WEB服务器同时还支持CGI协议的动态语言比如Perl、PHP等。NGINX专为性能优化而开发性能是其最重要的考量实现上非常注重效率能经受高负载的考验NGINX在官方测试中能够支持五万个平行链接而在实际的运作中可以支持二万至四万个平行链接总结如下
静态页面的WEB服务器动静分离客户端的正向代理服务端的反向代理服务端的负载均衡
什么是简单请求
请求同时满足以下两个条件称为简单请求否则为复杂请求
请求方式是HEAD、GET、POST 三种之一请求头包含但不超过这五个字段AcceptAccept-Languagecontent-LanguageLast-Event-IDContent-Type。其中Content-Type的值只能是application/x-www-form-urlencodedtext/plainmultipart/form-data 三种之一。
什么是复杂请求
凡是不简单请求的都属于复杂请求常见的复杂请求
请求方法是 PUT 或 DELETE的请求请求头的Content-Type 值为application/json的请求
什么是动静分离
动静分离其实就是使用NGINX的特性将客户端发来的请求分为动态请求和静态请求。静态请求直接从NGINX服务器所设定的根目录去获取对应的资源动态请求则转发给真实的后端服务去处理。这样不仅能够减轻应用服务器的压力将后台API接口服务化还能将前后端代码分开并行开发和部署。一般常见于SPRINGBOOT VUE的项目中。 那么如何配置呢
什么是正向代理
正向代理隐藏了真实的客户端VPN其实就是一个正向代理工具。当使用VPN访问墙外网站是VPN将访问请求代理到一个可以访问该网站的代理服务器上代理服务器把墙外服务器上获取的请求结果再转发给客户端这就是正向代理。
什么是反向代理
反向代理隐藏了真实的服务端当我们访问百度时其实内部会进行一个转发将请求代理到内网去但是具体是哪一台我们不知道我们也不需要知道这就是所谓的反向代理即反向代理“代理”的是服务器端且这个过程对于客户端而言是透明的。 负载均衡采用的就是反向代理。
什么是负载均衡
在互联网项目中当遇到请求爆发式增长的情况时单个服务器无法处理客户端请求需要使用多个服务器来分摊压力这就是负载均衡的初衷。
NGINX是如何工作的
NGINX采用MASTER-WORKER的模式NGINX在启动后会以守候进程的方式在后台运行启动后包含一个MASTER进程和多个WORKER进程WORKER进程以非root用户运行当然也可以在配置文件中配置运行 WORKER进程的用户。 WORKER进程的个数由配置文件决定一般和CPU个数相关有利于进程切换配置几个就有几个WORKER进程。
那么如何配置WORKER的用户以及进程数呢
NGINX的整体架构
MASTER进程不处理请求主要负责加载和分析配置文件、分配请求给WORKER节点、管理WORKER进程、平滑升级、服务重启、热加载、热部署等WORKER进程接收客户端请求、将请求一次送入各模块过滤、I/O 调用、数据缓存、发送响应缓存相关进程包括cache loader(缓存索引重建) 与 cache manager( 缓存索引管理) 两部分 Cache loader 在NGINX服务启动后由主进程生成根据本地磁盘上缓存建立索引元数据库后退出Cache manager 在元数据更新完成后对元数据是否过期做出判断。
NGINX是如何热加载的
所谓热部署就是配置文件nginx.conf修改后不需要停止NGINX服务不需要中断请求就能让配置文件生效但是NGINX必须重新加载一下nginx.conf否则修改不生效。 使用如下命令重新加载配置文件
nginx -s reload当配置文件nginx.conf修改后需要执行重新加载配置的指令此时NGINX接收到热加载的信号后会重新生成新的WORKER进程当然也是以新的配置进行请求处理的而且新的请求一定会交给新的WORKER进程。当老的WORKER进程处理完请求后进程会被杀死。