第一节:Nginx简介/对比/模块/架构、Windows/Linux/Docker下安装、常用指令总结

一. Nginx简介

1. 简介

 官网:http://www.nginx.org/     (各版本下载、文档介绍)

 源码:https://trac.nginx.org/nginx/browser

 Nginx 是一个高性能的HTTP和反向代理服务,也是一个IMAP/POP3/SMTP服务。

  1. 处理响应请求很快
  2. 高并发连接
  3. 低的内存消耗
  4. 具有很高的可靠性
  5. 高扩展性
  6. 热部署

 master 管理进程与 worker 工作进程的分离设计,使得 Nginx 具有热部署的功能,可以在 7 × 24 小时不间断服务的前提下,升级 Nginx 的可执行文件,也可以在不停止服务的情况下修改配置文件,更换日志文件等功能。

    可大量并行处理 :  Nginx 在官方测试的结果中,能够支持五万个并行连接,而在实际的运作中,可以支持二万至四万个并行连接,作为对比Tomcat的并行连接数只有几百个。

补充并行和并发的区别:

   并发:通常以秒为单位,通常指每秒能处理的并发请求数(TPS),是一个时间段内能处理的请求。

   并行:指的是某个时间点(不是区间!!),能处理的请求数。

举例:nginx能并行处理1万个请求,每个请求耗时100ms,  求nginx每秒的并发请求数?  答案:10万

 

2. 不同服务器的对比

Nginx是一个高性能WEB服务器,除它之外Apache、Tomcat、Jetty、IIS,它们都是Web服务器,或者叫做WWW(World Wide Web)服务器,相应地也都具备Web服务器的基本功能。Nginx 相对基它WEB服务有什么优势呢?

(1). Tomcat、Jetty 面向java语言,先天就是重量级的WEB服务器,其性能与Nginx没有可比性。

(2). IIS只能在Windows操作系统上运行。Windows作为服务器在稳定性与其他一些性能上都不如类UNIX操作系统,因此,在需要高性能Web服务器的场合下IIS并不占优。

(3). Apache的发展时期很长,而且是目前毫无争议的世界第一大Web服务器,其有许多优点,如稳定、开源、跨平台等,但它出现的时间太长了,在它兴起的年代,互联网的产业规模远远比不上今天,所以它被设计成了一个重量级的、不支持高并发的Web服务器。在Apache服务器上,如果有数以万计的并发HTTP请求同时访问,就会导致服务器上消耗大量内存,操作系统内核对成百上千的Apache进程做进程间切换也会消耗大量CPU资源,并导致HTTP请求的平均响应速度降低,这些都决定了Apache不可能成为高性能Web服务器,这也促使了Lighttpd和Nginx的出现。 下图可以看出07年到17 年强劲增长势头。
View Code

3. Nginx模块

   整体采用模块化设计是 Nginx 的一个重大特点,甚至 http 服务器核心功能也是一个模块

   旧版本的 Nginx 的模块是静态的,添加和删除模块都要对 Nginx 进行重新编译,1.9.11 以及更新的版本已经支持动态模块加载。

   高度模块化的设计是 Nginx 的架构基础,Nginx 服务器被分解为多个模块,每个模块就是一个功能模块,只负责自身的功能,模块之间严格遵循“高内聚,低耦合”的原则。

核心模块

    核心模块是 Nginx 服务器正常运行必不可少的模块,提供错误日志记录、配置文件解析、事件驱动机制、进程管理等核心功能。

标准 HTTP 模块

    标准 HTTP 模块提供 HTTP 协议解析相关的功能,如:端口配置、网页编码设置、HTTP 响应头设置等。

可选 HTTP 模块

   可选 HTTP 模块主要用于扩展标准的 HTTP 功能,让 Nginx 能处理一些特殊的服务,如:Flash 多媒体传输、解析 GeoIP 请求、SSL 支持等。

邮件服务模块

   邮件服务模块主要用于支持 Nginx 的邮件服务,包括对 POP3 协议、IMAP 协议和 SMTP 协议的支持。

第三方模块

   第三方模块是为了扩展 Nginx 服务器应用,完成开发者自定义功能,如:Json 支持、Lua 支持等。

 

4. nginx架构

 (1). nginx启动时,不处理网络请求,主要负责调度工作进程,也就是图示的三项:加载配置、启动工作进程及非停升级。所以,nginx启动以后,查看操作系统的进程列表,我们就能看到至少有两个nginx进程。

 (2). 服务器实际处理网络请求及响应的是工作进程(worker),在类unix系统上,nginx可以配置多个worker,而每个worker进程都可以同时处理数以千计的网络请求。

 (3). 模块化设计。nginx的worker,包括核心和功能性模块,核心模块负责维持一个运行循环(run-loop),执行网络请求处理的不同阶段的模块功能,如网络读写、存储读写、内容传输、外出过滤,以及将请求发往上游服务器等。而其代码的模块化设计,也使得我们可以根据需要对功能模块进行适当的选择和修改,编译成具有特定功能的服务器。

 (4). 事件驱动、异步及非阻塞,可以说是nginx得以获得高并发、高性能的关键因素,同时也得益于对Linux、Solaris及类BSD等操作系统内核中事件通知及I/O性能增强功能的采用,如kqueue、epoll及event ports。

 

5. 核心技术点

 (1). 配置文件语法介绍

 (2). 各种操作指令

 (3). 动静分离

 (4). 防盗链

 (5). 多域名站点

 (6). 下载限速

 (7). IP黑名单

 (8). 基于user-agent分流

 (9). 日志配置

 (10). 负载均衡配置

 (11). 高速缓存

 (12). 性能参数调优

(PS: 后面章节将重点介绍这些功能)

 

二. 不同环境安装详解

 

  在之前系列的文章中已经分别整理过,这里简单将不同系统下的安装和使用方式汇总一下。

 

  Windows下的安装和使用:        https://www.cnblogs.com/yaopengfei/p/12499588.html

  Linux(Centos)下的安装和使用: https://www.cnblogs.com/yaopengfei/p/13766324.html     【centos8.0下通过编译的模式安装, 安装繁琐,适用于配置各种插件】

                   https://www.cnblogs.com/yaopengfei/p/13766711.html     【单纯演示反向代理】

                 https://www.cnblogs.com/yaopengfei/p/15773719.html    【centos8.0下通过dnf指令安装  安装简单,但是不能配置插件】

  Docker下的安装和使用:            https://www.cnblogs.com/yaopengfei/p/13630267.html    【docker安装】

                          https://www.cnblogs.com/yaopengfei/p/13672708.html   【单纯演示反向代理】

 

 

三. 常用指令

 1. windows下cmd的指令

    启动服务:【start nginx】   (可以直接双击nginx.exe 启动服务)

 退出服务:【nginx -s quit】

 强制关闭服务:【nginx -s stop】

 重载服务:【nginx -s reload】  (重载服务配置文件,类似于重启,服务不会中止)

 验证配置文件:【nginx -t】

 使用配置文件:【nginx -c "配置文件路径"】

 使用帮助:【nginx –h】

ps: 如果使用powerShell,指令前需要加   ./

 

2. linux下的指令

   启动:【nginx】,  指定配置文件启动【nginx -c nignx.conf】,如果不指定,则默认安装目录下的配置文件

   停止:【nginx -s stop】

   退出:【nginx -s quit】

   关闭:

       查看进程号【ps -aux | grep nginx】    杀掉进程【kill -9 nginx】

   重新加载:【nginx -s reload】

   查看配置文件路径:【nginx -t】

   查看版本号:【nginx -v】

 

 

 

 

 

 

 

 

 

 

!

  • 作       者 : Yaopengfei(姚鹏飞)
  • 博客地址 : http://www.cnblogs.com/yaopengfei/
  • 声     明1 : 如有错误,欢迎讨论,请勿谩骂^_^。
  • 声     明2 : 原创博客请在转载时保留原文链接或在文章开头加上本人博客地址,否则保留追究法律责任的权利。
 

 

posted @ 2020-12-15 15:17  Yaopengfei  阅读(488)  评论(2编辑  收藏  举报