Nginx代理配置实战

浅析代理 Nginx功能 正向代理:客户端不知道服务端,也就是说客户端需要配置代理服务器来,代理服务器再去访问真正的服务端。挂梯子就是正向代理的应用。 反向代理:服务端不知道客户端,客户端不需要进行任何配置,用户只请求反向代理地址,反向代理服务器选择目标服务器,获取数据返回客户端。 负载均衡:在反向代理中,我们可以使用负载均衡去将请求分配到不同的服务器上。 动静分离:Nginx将接到的请求分为动态请求和静态请求,这在实际的应用中对应了前后端。 Nginx原理 Master - Worker 模式 在启动Nginx后,我们通过ps -ef可以发现有关nginx的进程有一个master process和n个worker process,并且我们查看nginx监听的端口,可以看到监听了80端口。 Master process: master进程的作用主要是读取并且验证nginx.conf, 并且管理worker进程,给worker进程传递消息。 Worker process: 每一个Worker进程都维护了一个线程去处理连接和请求(避免一个线程造成的线程切换问题),一般cpu几核就有几个worker进程。 所有的worker进程都是从master进程fork()过来的,worker进程提供好listenfd的接口, 为了保证只有一个进程处理连接,所有的Worker进程在注册listenfd接口读取事件前抢互斥锁accept_mutex,抢到互斥锁的那个进程注册listenfd读事件,在读事件里面调用accept接受连接,开始处理请求。 Nginx采取上面的这种进程模型的好处: 独立进程不需要加锁,省去锁的开销 独立进程互不影响,服务不会中断 独立进程异常退出,只影响该进程的请求 Cache Manager process: 除了上面两个进程外,我们还可以看到Cache Manager process, 与之对应的还有Cache Loader process(在nginx服务启动的时候由主进程生成,缓存数据加载完成后退出), Cache Manager process负责缓存索引的还礼,通过缓存机制,可以提高对请求的响应效率。 模块化 Nginx从功能上可以分为: Handlers: 处理请求,进行输出内容和修改headers等,一般只有一个 Filters: 接收请求进行链式修改 Proxies: Nginx的Htpp Upstream等模块,主要和后端进行交互,实现服务代理和负载均衡等 Nginx(内核)本身做的工作实际很少,当它接到一个 HTTP 请求时,它仅仅是通过查找配置文件将此次请求映射到一个 location block,而此 location 中所配置的各个指令则会启动不同的模块去完成工作,因此模块可以看做 Nginx 真正的劳动工作者。通常一个 location 中的指令会涉及一个 Handler 模块和多个 Filter 模块(当然,多个location可以复用同一个模块)。Handler模块负责处理请求,完成响应内容的生成,而 Filter 模块对响应内容进行处理。 ...

<span title='2023-03-23 19:01:29 +0800 +0800'>March 23, 2023</span>&nbsp;·&nbsp;2 min&nbsp;·&nbsp;yuanpeng11