Nginx简述
Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的。从2004年发布至今,凭借开源的力量,已经接近成熟与完善。
Nginx功能丰富,可作为HTTP Web服务器,也可作为反向代理负载均衡服务器,邮件服务器等。支持FastCGI、SSL、Virtual Host、URL Rewrite、Gzip等功能。并且支持很多第三方的模块扩展。
Nginx 优势功能
作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率,这点使 Nginx 尤其受到虚拟主机提供商的欢迎。能够支持高达 50,000 个并发连接数的响应,感谢 Nginx 为我们选择了epoll and kqueue作为开发模型.
作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP,也可以支持作为 HTTP代理服务器 对外进行服务。Nginx 用 C 编写, 不论是系统资源开销还是 CPU 使用效率都比 Perlbal 要好的多。
作为邮件代理服务器: Nginx 同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last.fm 描述了成功并且美妙的使用经验。
Tengine
Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。官网。
反向代理
要说反向代理,我们就先要理解正向代理。
正向代理
在如今的网络环境下,我们如果由于技术需要要去访问国外的某些网站,此时你会发现位于国外的某网站我们通过浏览器是没有办法访问的,此时大家可能都会翻墙进行访问,翻墙的方式主要是找到一个可以访问国外网站的代理服务器,我们将请求发送给代理服务器,代理服务器去访问国外的网站,然后将访问到的数据传递给我们!
![高级开发必须掌握Nginx之一 反向代理、动静分离、负载均衡](https://s2.51cto.com/oss/201910/10/dbc064d7770285f7e7aaaae09c599060.jpeg)
上述这样的代理模式称为正向代理,正向代理最大的特点是客户端非常明确要访问的服务器地址;最终服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端;正向代理模式屏蔽或者隐藏了真实客户端信息。
正向代理总结就一句话:代理端代理的是客户端。
反向代理
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
例如,当用户去某宝购买东西,我们根本不用关心某宝后台具体是怎么配置的,我只知道我访问某宝的代理服务器,代理服务器会代理所有的服务器提供数据给我们。
![高级开发必须掌握Nginx之一 反向代理、动静分离、负载均衡](https://s3.51cto.com/oss/201910/10/74420ed1afddd5d87986f6af640371d7.jpeg)
反向代理总结就一句话:代理端代理的是服务端。
动静分离
动静分离是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作,这就是网站静态化处理的核心思路。
动静分离简单的概括是:动态资源与静态资源的分离。
在我们的软件开发中,有些请求是后段的动态数据,有些请求是不需要经过后台处理的静态资源(如:css、html、image、js等等文件),这些不需要经过后台处理的资源称为静态资源,否则即是动态资源。
动静分离将网站静态资源(HTML,JavaScript,CSS,img等文件)与后台应用分开部署,提高用户访问静态代码的速度,降低对后台应用访问。例如我们将静态资源放到nginx中,动态资源转发到tomcat服务器中。
负载均衡
互联网早期,业务流量比较小并且业务逻辑比较简单,单台服务器便可以满足基本的需求;但随着互联网的发展,业务流量越来越大并且业务逻辑也越来越复杂,单台机器的性能问题以及单点问题凸显了出来,因此需要多台机器来进行性能的水平扩展以及避免单点故障。但是要如何将不同的用户的流量分发到不同的服务器上面呢?
负载均衡的思想是将客户端的流量首先发送扫负载均衡服务器,由负载均衡服务器通过一定的调度算法将流量分发到不同的应用服务器上面来解决单台机器的并发压力。
举例来说,比如某宝网站,每天同时连接到网站的访问人数已经爆表,单个服务器远远不能满足人民日益增长的购买欲望了,此时就需要越来越多的服务器来解决单台机器并发访问人数限制的问题。
![高级开发必须掌握Nginx之一 反向代理、动静分离、负载均衡](https://s2.51cto.com/oss/201910/10/870b11a1f29d8f5906bf52d76698686a.jpeg)