当前位置: 首页 > news >正文

Nginx 简介和安装

文章目录

    • 介绍
      • Nginx的优点
        • (1)速度更快、并发更高
        • (2)配置简单,扩展性强
        • (3)高可靠性
        • (4)热部署
        • (5)成本低、BSD许可证
    • Nginx的功能特性及常用功能
      • 基本HTTP服务
      • 高级HTTP服务
      • 邮件服务
      • Nginx常用的功能模块
  • Nginx环境准备
    • docker安装
    • 乌班图安装
    • Nginx目录结构分析
      • 方式一:Nginx服务的信号控制
      • 方式二:Nginx的命令行控制
    • Nginx服务器版本升级和新增模块

介绍

-Nginx(“engine x”)一个具有高性能的【HTTP】和【反向代理】的【WEB服务器】,同时也是一个【POP3/SMTP/IMAP代理服务器】

名词简介
POP3/SMTP/IMAP

  • POP3(Post Offic Protocol 3)邮局协议的第三个版本,
  • SMTP(Simple Mail Transfer Protocol)简单邮件传输协议,
  • IMAP(Internet Mail Access Protocol)交互式邮件存取协议,

Nginx的优点

(1)速度更快、并发更高

单次请求或者高并发请求的环境下,Nginx都会比其他Web服务器响应的速度更快。一方面在正常情况下,单次请求会得到更快的响应,另一方面,在高峰期(如有数以万计的并发请求),Nginx比其他Web服务器更快的响应请求。Nginx之所以有这么高的并发处理能力和这么好的性能原因在于Nginx采用了多进程和I/O多路复用(epoll)的底层实现。

(2)配置简单,扩展性强

Nginx的设计极具扩展性,它本身就是由很多模块组成,这些模块的使用可以通过配置文件的配置来添加。这些模块有官方提供的也有第三方提供的模块,如果需要完全可以开发服务自己业务特性的定制模块。

(3)高可靠性

Nginx采用的是多进程模式运行,其中有一个master主进程和N多个worker进程,worker进程的数量我们可以手动设置,每个worker进程之间都是相互独立提供服务,并且master主进程可以在某一个worker进程出错时,快速去"拉起"新的worker进程提供服务。

(4)热部署

现在互联网项目都要求以7*24小时进行服务的提供,针对于这一要求,Nginx也提供了热部署功能,即可以在Nginx不停止的情况下,对Nginx进行文件升级、更新配置和更换日志文件等功能。

(5)成本低、BSD许可证

Nginx本身是开源的,我们不仅可以免费的将Nginx应用在商业领域,而且还可以在项目中直接修改Nginx的源码来定制自己的特殊要求。

Nginx的功能特性及常用功能

Nginx提供的基本功能服务从大体上归纳为"基本HTTP服务"、“高级HTTP服务”和"邮件服务"等三大类。

基本HTTP服务

Nginx可以提供基本HTTP服务,可以作为HTTP代理服务器和反向代理服务器,支持通过缓存加速访问,可以完成简单的负载均衡和容错,支持包过滤功能,支持SSL等。

  • 处理静态文件、处理索引文件以及支持自动索引;
  • 提供反向代理服务器,并可以使用缓存加上反向代理,同时完成负载均衡和容错;
  • 提供对FastCGI、memcached等服务的缓存机制,,同时完成负载均衡和容错;
  • 使用Nginx的模块化特性提供过滤器功能。Nginx基本过滤器包括gzip压缩、ranges支持、chunked响应、XSLT、SSI以及图像缩放等。其中针对包含多个SSI的页面,经由FastCGI或反向代理,SSI过滤器可以并行处理。
  • 支持HTTP下的安全套接层安全协议SSL.
  • 支持基于加权和依赖的优先权的HTTP/2

高级HTTP服务

  • 支持基于名字和IP的虚拟主机设置
  • 支持HTTP/1.0中的KEEP-Alive模式和管线(PipeLined)模型连接
  • 自定义访问日志格式、带缓存的日志写操作以及快速日志轮转。
  • 提供3xx~5xx错误代码重定向功能
  • 支持重写(Rewrite)模块扩展
  • 支持重新加载配置以及在线升级时无需中断正在处理的请求
  • 支持网络监控
  • 支持FLV和MP4流媒体传输

邮件服务

Nginx提供邮件代理服务也是其基本开发需求之一,主要包含以下特性:

  • 支持IMPA/POP3代理服务功能
  • 支持内部SMTP代理服务功能

Nginx常用的功能模块

静态资源部署
Rewrite地址重写正则表达式
反向代理
负载均衡轮询、加权轮询、ip_hash、url_hash、fair
Web缓存
环境部署高可用的环境
用户认证模块...

Nginx的核心组成

nginx二进制可执行文件
nginx.conf配置文件
error.log错误的日志记录
access.log访问日志记录

Nginx环境准备

docker安装

  1. 制作挂载卷
    mkdir -p /mount/docker/nginx/html
    mkdir -p /mount/docker/nginx/logs
    mkdir -p /mount/docker/nginx/conf/
    运行容器 docker run -d -p 80:80 --name nginx nginx
  2. 拷贝配置文件
docker cp nginx:/etc/nginx/nginx.conf /mount/docker/nginx/conf/nginx.conf
docker cp nginx:/etc/nginx/conf.d /mount/docker/nginx/conf.d
docker cp nginx:/usr/share/nginx/html /mount/docker/nginx
  1. 启动容器
docker run \
-p 80:80 \
--name nginx \
-v /mount/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /mount/docker/nginx/conf.d:/etc/nginx/conf.d \
-v /mount/docker/nginx/logs:/var/log/nginx \
-v /mount/docker/nginx/html:/usr/share/nginx/html \
-d nginx:latest

乌班图安装

#安装
apt-get install nginx
# 查看版本
nginx -v
service nginx start

Nginx目录结构分析

在使用Nginx之前,我们先对安装好的Nginx目录文件进行一个分析,在这块给大家介绍一个工具tree,通过tree我们可以很方面的去查看centos系统上的文件目录结构,当然,如果想使用tree工具,就得先通过yum install -y tree来进行安装,安装成功后,可以通过执行tree /usr/local/nginx(tree后面跟的是Nginx的安装目录),获取的结果如下:

在这里插入图片描述

conf:nginx所有配置文件目录

  • fastcgi.conf:fastcgi相关配置文件
  • fastcgi.conf.default:fastcgi.conf的备份文件
  • fastcgi_params:fastcgi的参数文件
  • fastcgi_params.default:fastcgi的参数备份文件
  • scgi_params:scgi的参数文件
  • scgi_params.default:scgi的参数备份文件
  • uwsgi_params:uwsgi的参数文件
  • uwsgi_params.default:uwsgi的参数备份文件
  • mime.types:记录的是HTTP协议中的Content-Type的值和文件后缀名的对应关系
  • mime.types.default:mime.types的备份文件
  • nginx.conf:这个是Nginx的核心配置文件
  • nginx.conf.default:nginx.conf的备份文件
  • koi-utf、koi-win、win-utf这三个文件都是与编码转换映射相关的配置文件,用来将一种编码转换成另一种编码

html:存放nginx自带的两个静态的html页面

  • 50x.html:访问失败后的失败页面
  • index.html:成功访问的默认首页

**logs:**记录入门的文件,当nginx服务器启动后,这里面会有 access.log error.log 和nginx.pid三个文件出现。

**sbin:**是存放执行程序文件nginx

  • nginx是用来控制Nginx的启动和停止等相关的命令。

方式一:Nginx服务的信号控制

当将Nginx启动后,我们通过ps -ef | grep nginx命令可以查看到如下内容:
在这里插入图片描述

从上图中可以看到,Nginx后台进程中包含一个master进程和多个worker进程,master进程主要用来管理worker进程,包含接收外界的信息,并将接收到的信号发送给各个worker进程,监控worker进程的状态,当worker进程出现异常退出后,会自动重新启动新的worker进程。而worker进程则是专门用来处理用户请求的,各个worker进程之间是平等的并且相互独立,处理请求的机会也是一样的。nginx的进程模型,我们可以通过下图来说明下:

在这里插入图片描述

我们现在作为管理员,只需要通过给master进程发送信号就可以来控制Nginx,这个时候我们需要有两个前提条件,一个是要操作的master进程,一个是信号。

(1)要想操作Nginx的master进程,就需要获取到master进程的进程号ID。获取方式简单介绍两个,

方式一:通过ps -ef | grep nginx

方式二:在讲解nginx的./configure的配置参数的时候,有一个参数是--pid-path=PATH默认是/usr/local/nginx/logs/nginx.pid,所以可以通过查看该文件来获取nginx的master进程ID.

(2)信号

信号作用
TERM/INT立即关闭整个服务
QUIT"优雅"地关闭整个服务
HUP重读配置文件并使用服务对新配置项生效
USR1重新打开日志文件,可以用来进行日志切割
USR2平滑升级到最新版的nginx
WINCH所有子进程不在接收处理新连接,相当于给work进程发送QUIT指令

调用命令为kill -signal PID

signal:即为信号;PID即为获取到的master线程ID

  1. 发送TERM/INT信号给master进程,会将Nginx服务立即关闭。
kill -TERM PID / kill -TERM `cat /usr/local/nginx/logs/nginx.pid`
kill -INT PID / kill -INT `cat /usr/local/nginx/logs/nginx.pid`
  1. 发送QUIT信号给master进程,master进程会控制所有的work进程不再接收新的请求,等所有请求处理完后,在把进程都关闭掉。
kill -QUIT PID / kill -TERM `cat /usr/local/nginx/logs/nginx.pid`
  1. 发送HUP信号给master进程,master进程会把控制旧的work进程不再接收新的请求,等处理完请求后将旧的work进程关闭掉,然后根据nginx的配置文件重新启动新的work进程
kill -HUP PID / kill -TERM `cat /usr/local/nginx/logs/nginx.pid`
  1. 发送USR1信号给master进程,告诉Nginx重新开启日志文件
kill -USR1 PID / kill -TERM `cat /usr/local/nginx/logs/nginx.pid`
  1. 发送USR2信号给master进程,告诉master进程要平滑升级,这个时候,会重新开启对应的master进程和work进程,整个系统中将会有两个master进程,并且新的master进程的PID会被记录在/usr/local/nginx/logs/nginx.pid而之前的旧的master进程PID会被记录在/usr/local/nginx/logs/nginx.pid.oldbin文件中,接着再次发送QUIT信号给旧的master进程,让其处理完请求后再进行关闭
kill -USR2 PID / kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`
kill -QUIT PID / kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin`

在这里插入图片描述

  1. 发送WINCH信号给master进程,让master进程控制不让所有的work进程在接收新的请求了,请求处理完后关闭work进程。注意master进程不会被关闭掉
kill -WINCH PID /kill -WINCH`cat /usr/local/nginx/logs/nginx.pid`

方式二:Nginx的命令行控制

此方式是通过Nginx安装目录下的sbin下的可执行文件nginx来进行Nginx状态的控制,我们可以通过nginx -h来查看都有哪些参数可以用:

在这里插入图片描述

-?和-h:显示帮助信息

-v:打印版本号信息并退出

-V:打印版本号信息和配置信息并退出

-t:测试nginx的配置文件语法是否正确并退出

-T:测试nginx的配置文件语法是否正确并列出用到的配置文件信息然后退出

-q:在配置测试期间禁止显示非错误消息

-s:signal信号,后面可以跟 :

​ stop[快速关闭,类似于TERM/INT信号的作用]

​ quit[优雅的关闭,类似于QUIT信号的作用]

​ reopen[重新打开日志文件类似于USR1信号的作用]

​ reload[类似于HUP信号的作用]

-p:prefix,指定Nginx的prefix路径,(默认为: /usr/local/nginx/)

-c:filename,指定Nginx的配置文件路径,(默认为: conf/nginx.conf)

-g:用来补充Nginx配置文件,向Nginx服务指定启动时应用全局的配置

Nginx服务器版本升级和新增模块

http://www.lryc.cn/news/229462.html

相关文章:

  • idea生成代码(一):实现java语言的增删改查功能(基于EasyCode插件)支持自定义模板【非常简单】
  • vue预览各种格式图片png jpg tif tiff dcm
  • 出入库管理系统vue2前端开发服务器地址配置
  • 民安智库(第三方满意度调研公司):助力奢侈品品牌提升客户满意度
  • 蓝牙特征值示例1-迈金L308自行车尾灯夜骑智能表情尾灯的
  • Three 笔记
  • Crypto | Affine password 第二届“奇安信”杯网络安全技能竞赛
  • android使用notification消息通知(工具类封装)
  • PicoDiagnostics (NVH设备软件)-PS软件设置文件类型介绍
  • Linux 定时删除7天前的文件
  • VISA机制
  • 基于开源项目OCR做一个探究(chineseocr_lite)
  • 工作常遇,Web自动化测试疑难解答,测试老鸟带你一篇打通...
  • H5判断当前环境是否为微信小程序
  • 桌面云架构讲解(VDI、IDV、VOI/TCI、RDS)
  • 计算图片中两个任意形状多边形相交部分的大小
  • JavaScript的函数
  • stm32 - Cortex
  • 计算机组成原理之概述
  • 思维导图软件 Xmind mac中文版软件特点
  • 群晖 DSM 7.0 Synology Photos IOS | Android 客户端下载
  • @CacheInvalidate(name = “xxx“, key = “#results.![a+b]“,multi = true)是什么意思
  • React处理用户交互事件,如点击、输入框变化等,并使用事件处理函数来响应这些事件
  • 情侣游戏情侣飞行棋小程序系统:智能化互动,增添情感交流
  • 软考 系统架构设计师系列知识点之云计算(2)
  • Technology Strategy Patterns 学习笔记8- Communicating the Strategy-Decks(ppt模板)
  • Python实现WOA智能鲸鱼优化算法优化BP神经网络回归模型(BP神经网络回归算法)项目实战
  • 【机器学习基础】机器学习入门(2)
  • C#中在.NET 7.0控制台应用使用ADO.NET的方法
  • 垃圾回收(GC)