概述

Nginx架构图

image.pngNginx有两种进程,一个master进程,一种是worker进程。nginx启动时,会生成两种类型的进程,一个是主进程(Master),一个(windows版本的目前只有一个)或者多个工作进程(Worker)。
image.png
主进程并不处理网络请求,主要负责调度工作进程,也就是图示的三项:加载配置、启动工作进程及非停升级。所以,nginx启动以后,查看操作系统的进程列表,我们就能看到至少有两个nginx进程。
服务器实际处理网络请求及响应的是工作进程(worker),在类unix系统上,nginx可以配置多个worker,而每个worker进程都可以同时处理数以千计的网络请求。
worker进程的数量当然也不是越多越好,实际调优的时候,一般要根据cpu 的数量而定。

question1: 为什么这几个worker进程却能支撑上万甚至上十万的并发呢?

原因是Nginx设计的时候是基于非阻塞式的方式,能做到非阻塞是因为它的线程模型是基于Linux里面的epoll/select模型。

question2: 正向代理和反向代理的区别?

正向代理:客户端非常明确要访问的服务器地址;服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端;正向代理模式屏蔽或者隐藏了真实客户端信息。eg. FQ的方式主要是找到一个可以访问国外网站的代理服务器,我们将请求发送给代理服务器,代理服务器去访问国外的网站,然后将访问到的数据传递给我们。 反向代理:主要用于服务器集群分布式部署的情况下,反向代理隐藏了服务器的信息!换句话说:请求的来源也就是客户端是明确的,但是请求具体由哪台服务器处理的并不明确了,eg. 各大网站分布式部署,以解决请求量大的问题。