第一节:Nginx简介/对比/模块/架构、Windows/Linux/Docker下安装、常用指令总结
一. Nginx简介
1. 简介
官网:http://www.nginx.org/ (各版本下载、文档介绍)
源码:https://trac.nginx.org/nginx/browser
Nginx 是一个高性能的HTTP和反向代理服务,也是一个IMAP/POP3/SMTP服务。
- 处理响应请求很快
- 高并发连接
- 低的内存消耗
- 具有很高的可靠性
- 高扩展性
- 热部署
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 年强劲增长势头。
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架构
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 : 原创博客请在转载时保留原文链接或在文章开头加上本人博客地址,否则保留追究法律责任的权利。