Nginx反向代理流程
nginx和apache区别
                              Nginx 反向代理流程
  反向代理:使⽤代理服务器来接受internet上的连接请求,然后将请求转发给内部⽹络中的上游服务器,并将上游服务器得到的结果返回给请求连接的客户端,代理服务器对外表现就是⼀个web服务器。Nginx就经常拿来做HTTP反向代理服务器。
  Nginx具有强悍的⾼并发⾼负载能⼒,所以⼀般会作为前端服务器直接向客户端提供静态⽂件服务。但是⼀些复杂、多变的业务不适合放Nginx上,⼀般会使⽤Apache、Tomcat等服务器来处理。因此,Nginx⼀般会作为静态web服务器与反向代理服务器,将不适合⾃⼰处理的请求转发给上游服务器处理。
Nginx代理服务器处理过程:
1.接受HTTP请求,将⽤户的请求(包括HTTP包体)完整的接受到Nginx服务器的磁盘或者内存中。
2.向上游服务器发起连接
3.将缓存的客户端请求转发到上游服务器
  Nginx的这种转发⽅式与Squid等代理服务器的处理⽅式不同,Squid是⼀边接收客户端请求,⼀边将请求转发到上游服务器。相⽐之下,Nginx延长了⼀个请求处理的时间,并且增加了⽤于缓存请求内容的内存和磁盘空间。但是Nginx有效的降低了上游服务器的负载,将压⼒放在了Nginx服务器上。
  那么Nginx的这种机制是如何降低上游服务器的负载的呢?通常情况下,客户端与Nginx代理服务器⾛公⽹,代理服务器与上游服务器之间⾛内⽹。如果⼀边接受客户端请求,⼀般将请求转发到上游服务器的话,上游服务器需要长时间的保存这个连接,增加上游服务器的并发压⼒。但是如果是接受到完整请求之后,再转发给上游服务器的话,内⽹的速度更快,不需要那么长的时间保持连接,可以减低上游服务器的并发压⼒。