何为 Nginx (洗脑篇)
我想说一些话
我是阿健,我最爱笑。因为可以乐观的对待生活,也可以鼓励他人。
我经常看一些国外的论坛,近来时间要在国内工作了(不访问外网的情况下)。
CSDN的帖子很杂乱,有些写的非常不错,有的就是来凑字数的(不是攻击其他人)。
也许需要整理一些常识性的东西,做这一行要讲的清楚一些。
不要无厘头的怎么样怎么样,或者转载其他的人帖子(含蓄含蓄…)。
本着求学者的心态对待,想让同行或者正在学习的同学少走一些弯路。
我要对自己做的帖子的负责,如果我有什么错误请看到此贴的朋友,给予批评。
Nginx 是个什么?
要说到一个话题,首先我们得先知道它是个什么东西(what’s this?)。
Nginx(发音同engine x)是异步框架的 Web服务器。
有一些帖子就上来说 Nginx 负载均衡,那 Nginx 是个啥?
You tell me ?
是异步框架的 Web服务器 × 3
ok 确实是这样。
其实说起来负载均衡也确实有些根据的。
因为 Nginx 也可以用作反向代理,负载平衡器 和 HTTP缓存。
所以可以用来实现负载均衡。
Nginx 的 工作原理
汽车是怎么动起来的?
谁都知道汽车内装有发动机的,就算不知道发动机的制作原理,你也知道汽车有了燃料,产生动力。
一个沙发四个轮子的东西 就能开动起来了(这就算一个汽车能动起来的原理吧)。
好。
Nginx 的工作原理:
整体采用模块化设计是Nginx的一个重大特点,甚至http服务器核心功能也是一个模块。旧版本的Nginx的模块是静态的,添加和删除模块都要对Nginx进行重新编译,1.9.11以及更新的版本已经支持动态模块加载。
Nginx 由内核和模块组成,其中,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端请求映射到一个 location block(location 是 Nginx配置中的一个指令,用于 URL 匹配),而在这个 location 中所配置的每个指令将会启动不同的模块去完成相应的工作。
Nginx 的模块从结构上分为:
核心模块:HTTP 模块、 EVENT 模块和 MAIL 模块
基础模块: HTTP Access 模块、HTTP FastCGI 模块、HTTP Proxy 模块和 HTTP Rewrite模块,
第三方模块:HTTP Upstream Request Hash 模块、 Notice 模块和 HTTP Access Key模块。
介绍一些 Nginx 优点。
-
Nginx可以部署在网络上使用FastCGI脚本、SCGI处理程序、WSGI应用服务器或Phusion乘客模块的动态HTTP内容,并可作为软件负载均衡器。
-
Nginx使用异步事件驱动的方法来处理请求。Nginx的模块化事件驱动架构可以在高负载下提供更可预测的性能。
-
Nginx是一款面向性能设计的HTTP服务器,相较于Apache、lighttpd具有占有内存少,稳定性高等优势。
-
Nginx不采用每客户机一线程的设计模型,而是充分使用异步逻辑从而削减了上下文调度开销,所以并发服务能力更强。
-
Nginx在Linux操作系统下效率相当高。同时Nginx在OpenBSD或FreeBSD操作系统上采用类似于epoll的高效事件模型kqueue。
使用专业名词解释专业名词是不是有那么一点看不懂?
简而言之:
-
高并发响应性能非常好,官方 Nginx 处理静态文件并发 5w/s
-
反向代理性能非常强。(可用于负载均衡)
-
内存和 cpu 占用率低。(为 Apache 的 1/5-1/10)
-
对后端服务有健康检查功能。
-
配置代码简洁且容易上手。
Nginx 能做些什么?
负载均衡话题最多,说到这个就必须唠一唠反向代理。
反向代理(reverse proxy),专业名词?
我们可以这样去理解一下,我曾经在一本书上记不清书名《码农…》 作者是位非常有文学功底的大牛有句话说的非常不错。
在此用来解释反向代理合适。
大牛的原话是:正向代理就是客户端去选择服务端,反向代理就是服务端去选择客户端 。
说到这儿了,有人会问了,“还有正向代理(Forward Proxy)” 。
答案是肯定的。
并且还有透明代理代理。
相信很多的朋友都知道VPN(Virtual Private Network) 虚拟专用网 ,我们不讲不允许的东西,我们都是守法的中国公民。
VPN 就是一台海外的主机(连接至外网的主机) 我们搭建一个(很多种方法), 然后我们本地的电脑去连接我们的代理主机。 在OSI某一层的转发internet上的连接请求。这就是一个客户机选择指定主机的过程,这就是正向代理。
而反向代理代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
简而言之就是:
Nginx 使用反向代理,从而实现负载均衡。
小结语
关于Nginx 的配置与使用 会在下一篇博客给大家交代清楚。
关于Nginx 最权威的解释使用不是我也不是其他人,而是Nginx的官方地址。
在此奉上 https://www.nginx.com/
我是最爱笑的男人。