代理服务器
代理服务器根据其代理对象的不同,可以分为正向代理服务器与反向代理服务器。这里的“正”与“反”均是站在客户端角度来说的
正向代理¶
正向代理是对客户端的代理。客户端C想要从服务端S获取资源,但由于某些原因不能直接访问服务端,而是通过另外一台主机P向服务端发送请求。当服务端处理完毕请求后,将响应发送给主机P,主机P在接收到来自服务端的响应后,将响应又转给了客户端C。此时的主机P,就称为客户端C的正向代理服务器。
客户端在使用正向代理服务器时是知道其要访问的目标服务器的地址等信息的。
正向代理服务器是服务器的用户(客户端)架设的主机,与服务器无关,正向代理服务器的出现,使服务端根本就不知道真正客户端的存在。
反向代理¶
反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在将响应返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址。
两者区别¶
在知乎上找了1张图,可以帮助我们更好的理解。
Nginx的特点¶
- 高并发
- 低消耗
- 热部署
- 高扩展
- 高可用
Nginx的web请求处理机制¶
Nginx结合多进程机制和异步机制对外提供服务,异步机制使用的是异步非阻塞方式。Nginx的master进程会生成多个worker进程,master进程负责管理这些worker进程的生命周期、接受外部命令、解析perl脚本等。而worker进程则用于接受和处理客户端请求。
每个worker进程能够使用异步非阻塞方式处理多个客户端请求。当某个worker进程接收到客户端的请求后,会调用IO进程处理,如果不能立即得到结果,worker进程就去处理其他的请求。当IO返回结果后,就会通知worker进程,而worker进程得到通知后,就会挂起当前正在处理的事务,拿IO返回结果去响应客户端请求,worker进程采用的是epoll事件驱动模型与IO进行通信的。epoll模型底层采用的是“回调callback”代替里轮询,使效率高于select模型。