Nginx概述

1.Nginx简介

Nginx (engine x) 是一个轻量级的、高性能的、基于Http的、反向代理服务器,静态web服务器。
Nginx最初是由俄罗斯人Igor Sysoev(伊戈尔·赛索耶夫)使用C语言为俄罗斯访问量第二的Rambler.ru站点开发的一款服务器。2004年10月发布第一个版本。
Nginx的官网: http://nginx.org
国内大型的站点,例如百度、京东、新浪、网易、腾讯、淘宝等,都使用了Nginx。
https://www.netcraft.com/

2.代理服务器

2.1正向代理

隐藏

客户端隐藏

1
C请求和返回都通过P完成,对于S来说它的交互对象是P,并不知道C的存在

提速

宽带切换

1
C请求原链路是通过P完成与S交互,现由于应用QPS剧增宽带优化时切换D完成请求响应

缓存

热点缓存

1
P存储S热点数据,客户端可直接访问P进行数据交互

授权

权限管理

1
由于权限控制需要添加白名单,客户端无法直接访问S,可将P添加为S的白名单,客户端通过P完成与S的交互

2.2反向代理

隐藏

服务端隐藏

1
S的请求和返回都通过P完成,对于C来说它的交互对象是P,一定程度上隐藏了S

路由

功能路由

1
C的请求可以通过P完成具体模块的路由,对于C来说域名只需要配置一个即可

负载

负载均衡

1
C的请求可以通过P完成负载均衡,请求打在不同的实例上

动静分离

动静分离

1
客户端请求动态数据可通过PO1和PO2,请求静态资源可通过PV,V可配置P服务器上也可以配置在具体的服务器上

数据缓存

热点缓存

1
P可缓存S热点数据,当请求访问为热点数据时可直接通过与P完成交互,减少S的请求压力

2.3区别

正向代理特点:

  • 正向代理是对客户端的代理
  • 正向代理是架设在客户端的主机
  • 客户端在使用正向代理服务器时需要知道访问目标服务器地址信息

反向代理特点:

  • 反向代理是对服务端的代理
  • 反向代理是架设在服务端的主机
  • 客户端在使用反向代理服务器时不需要知道访问目标服务器地址信息

3.Nginx的特点

3.1高并发

  • 一个Nginx服务器在不做任何配置的情况下并发量可达1000左右。在硬件条件允许的前提下,Nginx可以支持高达5-10万的并发量(除了Nginx的设置外,Linux主机需要做大量的设置来配合Nginx)。
  • 对比一下Tomcat。Tomcat服务器默认的并发量为150(不做任何配置)。即,当有超过150个用户同时访问某Servlet时,Tomcat的响应就会变得非常慢。

3.2低消耗

官方给出的测试结果,10000个非活跃连接,在Nginx中仅消耗2.5M内存。对于一般性的DoS攻击来说就不是事儿,但对于DDoS也会是问题。

3.3热部署

可以在7*24小时不间断服务的前提下,进行Nginx版本的平滑升级,Nginx配置文件的平滑修改。即在不停机的情况下升级Nginx,修改替换Nginx配置文件。

3.4高可用

Nginx只所以可以实现高并发,是因为其具有很多工作进程worker。当这些工作进程中的某些出现问题停止工作时,并不会影响整个系统的整体运行。因为其它worker会接替那些出问题的线程。

3.5高扩展

Nginx只所以现在的用户很多,是因为很多功能都已经开发好并模块化。若需要哪些功能,只需要安装相应功能的扩展模块即可。根据编写扩展模块所使用的语言的不同,可以划分为两类:C语言扩展模块与LUA脚本扩展模块。 http://openresty.org/cn/

觉得文章有用的话,欢迎点赞打赏~