一、简介
Nginx是一款基于异步框架的轻量级高性能的Web服务器/反向代理服务器/缓存服务器/电子邮件代理服务器,并在一个BSD-like协议下发行。
特点:
- 优点
-
高并发量:基于epoll/kqueue模型开发,支持高并发量
-
内存消耗少:善于处理静态文件,相比于其他web服务器如:Apache,占用更少的内存及资源
-
简单稳定:配置简单(一个conf文件),运行简单(Nginx命令),而且运行稳定
-
模块化程度高:功能模块插件化设计,可以自由配置相应的功能
-
支持Rwrite重写规则:能够根据域名、URL等请求关键点,实现定制化的高质量分发
-
低成本:Nginx的负载均衡功能很强大而且免费开源,相比于几十万的硬件负载均衡成本相当低
-
支持多系统:Nginx代码完全用c语言从头写成,可以在各系统上编译并使用
-
- 缺点
-
动态处理差:Nginx善于处理静态文件,但是处理动态页面相比于Apache之类重量级的web软件能力稍差
-
rewrite弱:虽然Nginx支持rwrite功能多,但是相比于Apache之类的稍差
-
二、应用
1、正向代理和反向代理
Nginx不仅可以做反向代理,实现负载均衡。还能用作正向代理来进行上网等功能。
正向代理:如果把局域网外的Internet想象成一个巨大的资源库,则局域网中的客户端要访问Internet,则需要通过代理服务器来访问。这种代理服务就成为正向代理。正向代理需要在客户端配置代理服务器。
反向代理:客户端对反向代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,再返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器的IP地址。
2、负载均衡
客户端发送多个请求到服务器,服务器处理请求,有一些可能要与数据库进行交互,服务器处理完毕后,再将结果返回到客户端。这种单一服务器处理请求模式,在大并发情况下容易达到服务器的性能瓶颈造成服务器直接崩溃。
解决办法:
方法一:提高CPU执行频率,加大内存等提高机器的物理性能。但依旧存在服务器性能瓶颈问题。
方法二:采用负载均衡。增加服务器的数量,将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是所说的负载均衡。
3、动静分离
为了加快网站的解析速度,可以把动态页面和静态页面由不同服务器来解析,加快网站的解析速 度,降低原来单个服务器的压力。