概述
nginx就是反向代理服务器
Nginx 已经在俄罗斯最大的门户网站── Rambler Media上运行了3年时间,同时俄罗斯超过20%的虚拟主机平台采用Nginx作为反向代理服务器。
在国内,已经有 淘宝、新浪博客、新浪播客、网易新闻、六间房、56.com、Discuz!、水木社区、豆瓣、YUPOO、海内、迅雷在线 等多家网站使用 Nginx 作为Web服务器或反向代理服务器。
Nginx优点
- 跨平台:Nginx可以在大多数Unix like OS 编译运行,而且也有Windows的移植版本。
- 配置异常简单,非常容易上手。配置风格跟程序开发一样,神一般的配置。
- 非阻塞、高并发连接:数据复制时,磁盘I/O的第一阶段是非阻塞的。官方测试能够支撑5万并发连接,在实际生产环境中跑到2~3万并发连接数.(这得益于Nginx使用了最新的epoll模型)。
- master/worker结构:一个master进程,生成一个或多个worker进程
- 内存消耗小:处理大并发的请求内存消耗非常小。在3万并发连接下,开启的10个Nginx 进程才消耗150M内存(15M*10=150M)
- 成本低廉:Nginx为开源软件,可以免费使用。而购买F5 BIG-IP、NetScaler等硬件负载均衡交换机则需要十多万至几十万人民币
- 内置的健康检查功能:如果 Nginx Proxy 后端的某台 Web 服务器宕机了,不会影响前端访问。
- 节省带宽:支持 GZIP 压缩,可以添加浏览器本地缓存的 Header 头。
- 稳定性高:用于反向代理,宕机的概率微乎其微
正向代理与反向代理
正向代理
正向代理是一个位于客户端和原始服务器之间的服务器,为了从原始服务器取的内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。
用途
(1)访问原来无法访问的资源,如google
(2) 可以做缓存,加速访问资源
(3)对客户端访问授权,上网进行认证
(4)代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息
反向代理
在服务器端接收客户端的请求,然后把请求分发给具体的服务器进行处理,然后再将服务器的响应结果反馈给客户端。Nginx就是其中的一种反向代理服务器软件。
作用
(1)保证内网的安全,阻止web攻击,大型网站,通常将反向代理作为公网访问地址,Web服务器是内网
(2)负载均衡,通过反向代理服务器来优化网站的负载
简单来说
正向代理:客户端知道服务器端,通过代理端连接服务器端。代理端代理的是服务器端。
反向代理:所谓反向,是对正向而言的。服务器端知道客户端,客户端不知道服务器端,通过代理端连接服务器端。代理端代理的是客户端。代理对象刚好相反,所以叫反向代理。
客户端访问nginx是正向代理的过程,nginx访问服务器是反向代理的过程
负载均衡
负载均衡一般就是指我们的服务假如是集群部署,想要对外提供统一的一个访问地址,这时候需要用Nginx,但是集群必然是多个服务,这个时候我们一般不希望用户每次访问都代理到一个服务器上,这样那个服务器压力就会很大,起不到集群作用,这时候就可以通过Nginx配置负载均衡。
应用场景:可以通过Nginx作为网关进行反向代理,现在很多程序流行集群部署,这时候就会产生一个问题,假如三个服务集群,我想要用一个域名访问,这个时候可以通过Nginx单独出来一个服务器,然后进行配置其他三台服务器ip,而对外只暴露域名即可,至于通过域名访问到三个服务器其中的哪一个,这个由Nginx来设置。
动静分离
为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度。降低原来单个服务器的压力。
单机项目的话一般我们都是将html跟后端项目放到tomcat,假如并发量过大,tomcat肯定会压力过大,这时候可以考虑将html这些前端静态资源放到单独的静态文件存储系统,从而起到分担tomcat压力作用。
使用nginx可以将动静的请求分开,分别访问对应的资源。