2020-07-21

# nginx 从入门到入坑

## nginx 基本概念

Nginx(发音同 engine x)是一款轻量级的 Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个 BSD-like 协议下发行,可以在 UNIX、GNU/Linux、BSD、Mac OS X、Solaris,以及 Microsoft Windows 等操作系统中运行。

Nginx 由俄罗斯的程序设计师 Igor Sysoev 所开发,最初供俄国大型的入口网站及搜寻引擎 Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强(用于解决 C10K 问题),事实上 nginx 的并发能力确实在同类型的网页服务器器中表现较好。

## nginx 原理

![在这里插入图片描述](https://img-blog.csdnimg.cn/2020072108540835.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5NjU0Mzk5,size_16,color_FFFFFF,t_70#pic_center)

####  master  和 worker

nginx在启动后,会有一个master进程和多个worker进程。

master进程主要用来管理worker进程,包含:接收来自外界的信号,向各worker进程发送信号,监控worker进程的运行状态,当worker进程异常退出后,,会自动重新启动新的worker进程。

而基本的网络事件,则是放在worker进程中来处理了。多个worker进程之间是对等的,他们同等竞争来自客户端的请求,各进程互相之间是独立的。一个请求,只可能在一个worker进程中处理,一个worker进程,不可能处理其它进程的请求。worker进程的个数是可以设置的,**一般我们会设置与机器cpu核数一致**

#### 一个master  和多个 worker 的好处

  1 可以使用 nginx -s reload 热部署,利用 nginx 进行如部署操作

  2 每个worker 是独立的进程,如果一个出问题,其他的独立worker 还能继续工作,实现请求过程,不会造成服务中断。

## nginx优点

1 .高并发。静态小文件

2 占用资源少。2万并发、10个线程,内存消耗几百M。

3 功能种类比较多。web,cache,proxy。每一个功能都不是特别强。

4 支持epoll模型,使得nginx可以支持高并发。

5 nginx 配合动态服务和Apache有区别。(FASTCGI 接口)

6 利用nginx可以对IP限速,可以限制连接数。

7 配置简单,更灵活。

## nginx配置文件

#####  第一部分 全局块

设置一些影响nginx 服务器整体运行的配置指令

  worker_processes  1;

    nginx 服务器并发处理服务的关键配置,worker_processes  值越大可支持的并发处理数量也越多,但是会受到硬件,软件等设备的制约

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200721173622990.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5NjU0Mzk5,size_16,color_FFFFFF,t_70#pic_center)

#####  第二部分  events

  涉及的指令主要影响 nginx 服务器与用户的网络连接

#####  第三部分 http块

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200721173853330.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5NjU0Mzk5,size_16,color_FFFFFF,t_70#pic_center)

####  1 http 全局快

                http 全局块配置的指令包括  文件引入,MIME-TYPE定义,日志自定义,连接超时时间,单链接请求数上限等。

####        2 server

                这块与虚拟主机有密切关系,每个server块相当于一个虚拟主机

          每个server块可以分为  全局server块  以及可以同时包括多个 location

###### (1) 全局server 块

    最常见的配置是本虚拟机 主机的监听配置和 本虚拟 主机的名称 以及 IP

######  (2) location

          一个server 可以配置多个 location  块

  主要是 基于 nginx 服务器收到的请求 字符串(),对虚拟主机名称(也可以是IP 别名)之外的的字符串进行匹配,对特定的请求进行处理。地址定向,数据缓存和应答控制等功能,还有许多第三方模块的配置

## nginx 常用用途

#### 1 正向代理

  所谓正向代理就是顺着请求的方向进行的代理,即代理服务器他是由你配置为你服务,去请求目标服务器地址。

#### 2 反向代理

  所谓反向代理正好与正向代理相反,代理服务器是为目标服务器服务的,虽然整体的请求返回路线都是一样的都是Client到Proxy到Server。

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200721174204611.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5NjU0Mzk5,size_16,color_FFFFFF,t_70#pic_center)

#### 3负载均衡

  单个服务器解决不了,我们增加服务器的数量,让后将请求分发到各个服务器上,将原先分发到单个服务器上的内容,分发到多个系统,这就是我们说的负载均衡

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200721174114400.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5NjU0Mzk5,size_16,color_FFFFFF,t_70#pic_center)

##### ngnix 的负载均衡 策略:

  ###### 1 轮询 (默认)

######  2 weight  权重

        默认为1 权重 越高  分配的用户就越多

  #####  3 ip_hash

          每个请求按照访问的ip 的hash 结果分配。这样 每个访客固定访问一个服务器 ,可解决 session 的问题,

    直接在 upstream server_poll {

        ip_hash

}

#### 4动静分离

动静分离,通过中间件将动静分离和静态请求进行分离;

通过中间件将动态请求和静态请求分离,可以减少不必要的请求消耗,同时能减少请求的延时。

通过中间件将动态请求和静态请求分离

**动静分离是指,静态页面与动态页面解耦分离,用不同系统承载对应流量的架构设计方法。**

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200721174441552.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5NjU0Mzk5,size_16,color_FFFFFF,t_70#pic_center)

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200721174533929.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5NjU0Mzk5,size_16,color_FFFFFF,t_70#pic_center)

## nginx高可用

#### 准备工作

1 需要多台 nginx

2 需要 虚拟 IP

3 需要 keepalived

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200721174658300.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5NjU0Mzk5,size_16,color_FFFFFF,t_70#pic_center)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。