1、一般请求响应:客户端发送多个请求到服务器,服务器处理请求,有些要和数据库进行交互,服务器处理完毕之后,再将结果返回给客户端。
(客户端——通过http协议访问——应用服务器)
正向代理:就是局域网中的电脑用户不能直接访问服务器,只能通过代理服务器来访问,客户端知道自己访问的是代理服务器。比如VPN。
2、当流量增多,为提高性能,使用nginx可以将这些请求分配到多个服务器,还提供安全性和缓存。
前端的users通过不同app/外部网页把这些请求发到nginx,通过nginx把请求进行反向代理,代理到后端应用服务器/web服务器上,再通过服务器的应用访问数据库,最后把请求结果返回给users.
(客户端<——>nginx——>服务器——>数据库)
nginx可加载一个简单的缓存,该缓存对要去的这条特定路线的所有请求,将其保存在缓存中,就不必每次都要与数据库通信和整个基础设施通信,且可以更快地为请求服务。
补充:
- web服务器:负责处理和响应用户请求,一般也称为http服务器,如 Apache、IIS、Nginx
- 应用服务器:存放和运行系统程序的服务器,负责处理程序中的业务逻辑,如 Tomcat、Weblogic、Jboss(现在大多数应用服务器也包含了web服务器的功能)
3、nginx是一个http服务器,采用事件驱动的异步非阻塞处理方式框架,nginx三个核心功能:静态服务器、反向代理、负载均衡。
静态服务器:将服务器上的静态文件通过http协议展现给客户端。
- location可正则匹配。
- Nginx提高速度:动静分离,就是把静态资源放到Nginx上,由Nginx管理,动态请求转发给后端。(api接口服务化、前后端开发并行、减轻后端服务器压力,提高静态资源访问速度)
- 在Nginx下把静态资源、日志文件归属到不同域名下,便于管理维护。
- Nginx可进行IP访问控制,在Nginx这一层,内置一个黑名单模块,就不必等请求通过Nginx达到后端在进行拦截。
nginx通过反向代理来实现负载均衡。
反向代理(proxy_pass):nginx——>upstream——>host
客户端只要把请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据,然后再返回到客户端。客户端无法感知代理,反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器ip地址。反向代理最常用的是upstream模块,把提供的服务的真实IP地址进行编写。
负载均衡:分发请求到后端服务器。
6种常用负载均衡算法:
- 轮询:依次将请求分配到各个后台服务器,挂掉的服务器可自动删除
- 加权轮询:将请求分配到不同的机器中
- ip_hash:将请求的ip的hash值分配到对应的后台服务器,保证同一ip请求总是到同一个后台服务器,可解决session问题
- 最小连接:优先将请求分配给连接最少的服务器
- url_hash:将请求的url 的hash值分配到服务器,当后台服务器为缓存时,效率最高(第三方模块)
- 最快响应时间:根据服务器响应时间分发,响应时间短,分发越多(第三方模块)