Ngnix

Nginx学习笔记

2019-05-29  本文已影响112人  千淘萬漉

一、背景与介绍


1、功能

Nginx常用于WEB服务器和反向代理服务器,在架构中充当网关角色,主要作用如下:

2、反向代理

反向代理服务器实现了路由和负载均衡的功能,那么什么是代理?什么是正向、反向代理?

在正向代理中,Proxy和Client同属于一个LAN(图中方框内),隐藏了客户端信息;在反向代理中,Proxy和Server同属于一个LAN(图中方框内),隐藏了服务端信息;

利用反向代理的功能可以实现:
(1)保证内网的安全,通常将反向代理作为公网访问地址,Web服务器是内网
(2)负载均衡,通过反向代理服务器来优化网站的负载

3、负载均衡

source:Nginx 相关介绍(Nginx是什么?能干嘛?)

4、限流

系统设计时一般会预估负载,当系统暴露在公网中时,恶意攻击或正常突发流量等都可能导致系统被压垮,而限流就是保护措施之一。Nginx 提供两种限流方式,一是控制速率,二是控制并发连接数。

二、架构与原理


1、基本设计

Nginx进程模型为一个master进程生成多个worker子进程(每个进程只有一个主线程),一个worker响应多个用户请求。Nginx 的高并发性能源自于:Nginx 采用了异步非阻塞的方式来处理请求,也就是说,Nginx 是可以同时处理成千上万个请求的,而apache 的常用工作方式为同步阻塞(apache 也有异步非阻塞版本,但因其与自带某些模块冲突,所以不常用),每个请求会独占一个工作线程,接收请求之后,会一直等待该请求读取程序文件(IO)(同步),执行业务逻辑,返回客户端,所有操作完成之后才能处理下一个请求(阻塞)如果服务器已经达到256(apache最多设置256个)的极限,那么接下去的访问就需要排队这也就是为什么某些服务器负载不高的原因。

2、语法

location

location [=|~|~*|^~] /uri/ {… }
首先匹配 =,其次匹配^~,其次是按文件中顺序的正则匹配,最后是交给 /通用匹配。当有匹配成功时候,停止匹配,按当前匹配规则处理请求。

upstream

upstream nginx {
  server 172.17.0.1:8080;
  server 172.17.0.2:8080;
}

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。down 暂时不参与负载

upstream nginx {
  server 172.17.0.1:8080 weight=2;
  server 172.17.0.2:8080 weight=1;
}

每个请求按访问ip的hash结果分配,这样同一客户端的请求总是发往同一个后端服务器,可以解决session的问题。

upstream nginx {
  ip_hash;
  server 172.17.0.1:8080;
  server 172.17.0.2:8080;
}
上一篇 下一篇

猜你喜欢

热点阅读