假设目标服务器是一个启动着本地服务的TomcatServer(localhost:8080),nginx就可以看作是一个代理服务器Proxy(XXX域名/IP:80)
先来看一张很简单的从知乎上拿来的图:
正向代理:
代理的是客户端,客户端明确访问的目标服务器但是不能直接访问目标服务器,而是必须通过nginx这种代理服务器去转发请求。
例如:客户端发起请求的时候就知道请求服务器上8080端口的服务,但是从客户端发起的请求很明显不可能直接到达服务器本地,这个时候Nginx就会接到这个请求,然后向localhost的目标服务器转发这个请求并且将返回的数据结果再返回给客户端。在这里客户端对自己要请求的目标服务很明确,所以Nginx只是帮客户端做了一层转交的代理操作。针对于服务器来说,它只是接到请求返回响应,而不知道是哪个客户端发起的,所以称之为客户端的代理。
正向代理的作用:
1:不可以访问的外网资源,通过正向代理访问
2:做缓存加速访问速度
3:做访问授权和上网认证
4:代理服务器可以保护用户信息安全,服务器端不知道哪个客户端发起的请求
反向代理:
代理的是服务器端,客户端不知道访问的目标服务器,而是由nginx做反向代理进行转发请求。
例如:经常用反向代理实现的负载均衡,客户端请求统一到代理服务器再进行转发,用户不知道他的请求最终会进入到哪一台服务器处理,但是服务器清楚知道这个请求的客户端,请求分发过程是由Nginx做的,所以就是面向服务器端的反向代理。
反向代理的作用:
1:通过做多一层代理服务器,保护内网服务的安全
2:做负载均衡,缓解服务器压力