什么是Nginx
Nginx 是一款高性能(响应/并发更快更高)的反向代理 和 web 服务器。
特性:
- 系统资源消耗低;
- 运行稳定;
- 具有高性能的并发处理能力;
作用:
- 正向代理和反向代理
- 负载均衡
- 动静分离
正向代理和反向代理
什么是代理服务器
就是位于发起请求的客户端与原始服务器端之前的一台跳板服务器,正向代理可以隐藏客户端,方向代理可以隐藏原始服务器。
正向代理
- 是代理客户端。客户端 <---> 代理 ---> 服务端。可以理解为 客户端与代理服务器是一个整体。
- 是一个位于客户端和原始服务器(origin server)之前的服务器,为来从原始服务器取得内容。
- 客户端向代理发送一个请求并指定模板(原始服务器),然后代理服务器转交请求并将获取的内容返回给客户端。比如使用VPN代理国内无法直接打开的国外网站。
反向代理
- 是代理服务端。客户端 ---> 代理 <---> 服务端。可以理解为 代理服务器与服务端是一个整体。
- 是一个位于客户端和原始服务器(origin server)之后的服务器,此时反向代理服务器和原始服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址,并且客户端不需要进行任何特别的设置。
- 客户端向反向代理发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获取的内容返回给客户端,就像这些内容原本就是它自己的一样。
正向代理和反向代理的区别
- 用途
- 正向代理:
- 访问原来无法访问的资源
- 可做缓存,加速访问资源,减少网络使用率
- 对客户端访问授权,上网进行认证
- 代理可以记录用户访问记录等,且对外隐藏用户信息
- 反向代理:
- 典型用途是将防火墙后面的服务器提供给 Internet 用户访问;
- 为后端的多台服务器提供负载均衡,或为后端较慢的服务器提供缓冲服务;
- 可以启用高级URL策略和管理技术,从而使处于不同的 web 服务器系统的 web 页面同时存在于同一个 URL 空间下;
- 正向代理:
- 安全性
- 正向代理
- 允许客户端通过它访问任意网站并且因此客户端自身,因此你必须采取安全措施以确保为经过授权的客户端提供服务;
- 反向代理
- 反向代理对外都是透明的,访问者并不知道自己访问的是一个代理;
- 正向代理
负载均衡
参考: Nginx系列教程(三)| 一文带你读懂Nginx的负载均衡
什么是负载均衡
- 是高可用网络基础架构的关键组件,通常用于将工作负载分布到多个服务器来提高网站、应用、数据库或其他服务的性能和可靠性。
- 在服务器集群中,Nginx 可以将接收到的客户端请求“均匀地”(严格讲并不一定均匀,可以通过设置权重)分配到这个集群中所有的服务器上。这个就叫做负载均衡。
负载均衡的作用
- 分摊服务器集群压力。Nginx 会按照一定的算法轮询、权重将客户端发来的请求转发至不同的应用服务器上,同时减轻单台服务器的压力,提高服务器的并发量;
- 保证客户端访问的稳定性。一旦发现某台服务器异常,那么在这以后代理进来的客户端请求都不会被发送到该服务器上,直至健康检查发现该服务器已恢复正常,从而保证客户端访问的稳定性。
负载均衡的策略方式
- 轮询(默认) 客户端发出的每个请求将按照时间顺序逐一分配到不同的后端服务器,如后端服务器down掉,能自动剔除。
- weight - 权重 默认为1,权重越高被分配的客户端也就越多。用于后端服务器性能不均的情况。
- ip_hash 每个请求按访问 IP 的hash结果分配,每个访客固定访问一个后端服务器,可解决session的问题。
- fair(第三方) 按后端服务器的响应时间来分配请求,响应时间短的优先分配。
- url_hash(第三方) 按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
动静分离
参考:Nginx系列教程(四)| 一文带你读懂Nginx的动静分离
什么是动静分离
- 就是把
动态请求和静态请求分开。静态页面与动态页面采用不同系统访问的架构设计方法。
动静分离的目的
- 加快网站的解析速度。可以把动态页面和静态页面交给不同的服务器来解析,来加快解析速度,提高请求的访问效率,降低原来单个服务器的压力。