首先,请求流向是 client -> nginx -> server
命名历史
网管为了控制大家能上什么网站就弄了个防火墙。http请求是经由代理服务器转发到各个网站,再把数据发回来。这个叫做http proxy。
而nginx里面的功能刚好与这个过程相反,是对client来说只看到了1台server,请求发到nginx以后,由nginx转发给内网的服务器,这个过程对于client来说是透明的,所以被称之为反向代理,也就是reverse proxy。
另外一个,在http协议的语义里面,由url标示的是资源(resource),而资源是存在于服务器端的。所以自然的,将服务器的资源反向代理提供给客户端的时候,application server就被称为上游。
源码分析
当Nginx收到downstream(用户或者是其他代理)的请求的时候,它会初始化upstream的请求。经过了一系列步骤之后,Nginx创建了向upstream服务器的请求,并向upstream服务器发起连接请求。
然后通过事件触发/处理机制,Nginx通过建立的连接向upstream发送请求,并检查client(downstream)连接是否断开。当从upstream服务器收到回复的时候,会触发事件,并向downstream发送回复消息和body。