IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Nginx学习笔记 -> 正文阅读

[系统运维]Nginx学习笔记

原课程地址:https://www.bilibili.com/video/BV1og411T76d?p=1

001-Nginx课程内容介绍

None

002-Nginx背景介绍

一个具有高性能的HTTP反向代理WEB服务器,同时也是一个POP3,SMTP,IMAP代理服务器,完全开源。

1.Web服务器
在这里插入图片描述
2.HTTP协议
在这里插入图片描述
3.POP3,SMTP,IMAP在这里插入图片描述
4.反向代理
在这里插入图片描述

反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率。

003-常见服务器的对比

在这里插入图片描述
在这里插入图片描述

004-Nginx的优点

  • 速度更快,并发更高
  • 配置简单,扩展性强
  • 高可靠性
  • 热部署
  • 成本低,BSD许可证
    在这里插入图片描述
    在这里插入图片描述
    关于开源许可证:
    在这里插入图片描述
    所以我们可以免费的将Nginx应用在商业领域。

两个应用:

OpenRestry [Nginx+Lua] Tengine[淘宝]
在这里插入图片描述

005-Nginx的功能特性及常用功能

主要包括以下三种:

  • 基本http服务
  • 高级http服务
  • 邮件服务

基本http服务:
在这里插入图片描述
高级http服务:

在这里插入图片描述
邮件服务:

在这里插入图片描述

Nginx常用的功能模块:

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

Nginx的核心组成:

  1. nginx二进制可执行文件
  2. nginx.conf配置文件
  3. error.log错误日志文件
  4. access.log访问日志文件

006-Nginx的官方简介

官网:http://nginx.org

007-Nginx系统环境准备

  • 关闭防火墙
  1. 关闭运行的防火墙,系统重新启动后,防火墙将重新打开:systemctl stop firewalld
  2. 永久关闭防火墙,系统重新启动后,防火墙依然关闭:systemctl disable firewalld
  3. 查看防火墙状态:systemctl status firewalld
  • 查看内核信息
    uname -a

  • 设置selinux
    查看状态:sestatus
    设定关闭,修改配置文件:vim /etc/selinux/config

[root@izbp1i6xv0q1dyvetecayhz selinux]# pwd
/etc/selinux
[root@izbp1i6xv0q1dyvetecayhz selinux]# cat config

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

008-Nginx安装方式介绍及源码安装的准备工作

如果通过Nginx源码安装需要提前准备的内容:

  • 首先需要gcc编译器;

  • PCRE库:
    在这里插入图片描述

  • zlib:
    在这里插入图片描述

  • OpenSSL:
    在这里插入图片描述

009-通过Nginx源码简单安装

  1. 使用wget下载源码:wget http://nginx.org/download/nginx-1.20.1.tar.gz
  2. 创建目录进行包管理:mkdir -p nginx/coremv xx.tar.gc nginx.core
  3. 解压缩:tar -zxvf xx.tar.gc
  4. 检查:./configure
  5. 编译:make
  6. 安装:make install

安装路径:/usr/local/nginx
目录结构:

[root@izbp1i6xv0q1dyvetecayhz local]# tree nginx/
nginx/
├── client_body_temp
├── conf
│   ├── fastcgi.conf
│   ├── fastcgi.conf.default
│   ├── fastcgi_params
│   ├── fastcgi_params.default
│   ├── koi-utf
│   ├── koi-win
│   ├── mime.types
│   ├── mime.types.default
│   ├── nginx.conf
│   ├── nginx.conf.default
│   ├── scgi_params
│   ├── scgi_params.default
│   ├── uwsgi_params
│   ├── uwsgi_params.default
│   └── win-utf
├── fastcgi_temp
├── html
│   ├── 50x.html
│   └── index.html
├── logs
│   ├── access.log
│   ├── error.log
│   └── nginx.pid
├── proxy_temp
├── sbin
│   └── nginx
├── scgi_temp
└── uwsgi_temp

010-通过yum安装nginx-上

None

011-通过yum安装nginx-下

None

012-简单源码安装与yum安装的区别

源码简单安装,通过./nginx -V查看版本及相关配置信息:

[root@izbp1i6xv0q1dyvetecayhz sbin]# ./nginx -V
nginx version: nginx/1.20.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
configure arguments:

对于使用yum安装的情况,其configure参数情况更复杂:
在这里插入图片描述
configure脚本检查编译环境,然后生成makefile文件。

编译器在开始工作前要知道当前的系统环境,比如安装的位置要在哪里、要依赖什么组件等等,由于每台电脑的环境不一样,可以通过configure配置文件指定编译参数。运行这个脚本就可以获知编译参数,编译器就可以灵活地实现针对你个人电脑的“私人定制”,这也是linux源码安装的一个优势。
用户也可以自定义参数,比如假设我们要自定义安装目录,可以./configure --prefix=/usr/local/apache2。又比如假如要动态库和静态库一起编译,使用./config shared --prefix=/usr/local --openssldir=/usr/local/ssl。

013-通过Nginx源码复杂安装

PATH:是和路径相关的配置信息

with:是启动模块,默认是关闭的

without:是关闭模块,默认是开启的

一些简单的路径配置:

--prefix=PATH

指向Nginx的安装目录,默认值为/usr/local/nginx   

--sbin-path=PATH

指向(执行)程序文件(nginx)的路径,默认值为<prefix>/sbin/nginx

--modules-path=PATH

指向Nginx动态模块安装目录,默认值为<prefix>/modules

--conf-path=PATH

指向配置文件(nginx.conf)的路径,默认值为<prefix>/conf/nginx.conf

--error-log-path=PATH

指向错误日志文件的路径,默认值为<prefix>/logs/error.log

--http-log-path=PATH

指向访问日志文件的路径,默认值为<prefix>/logs/access.log

--pid-path=PATH

指向Nginx启动后进行ID的文件路径,默认值为<prefix>/logs/nginx.pid

--lock-path=PATH

指向Nginx锁文件的存放路径,默认值为<prefix>/logs/nginx.lock

如何卸载nginx:

./nginx -s stop	#停止进程
rm -rf /usr/local/nginx	#删除文件
make clean	#清除编译环境

通过源码指定参数复杂安装:

[root@izbp1i6xv0q1dyvetecayhz nginx-1.20.1]# ./configure --prefix=/usr/local/nginx \
> --sbin-path=/usr/local/nginx/sbin/nginx \
> --modules-path=/usr/local/nginx/modules \
> --conf-path=/usr/local/nginx/conf/nginx.conf \
> --error-log-path=/usr/local/nginx/logs/error.log \
> --http-log-path=/usr/local/nginx/logs/access.log \
> --pid-path=/usr/local/nginx/logs/nginx.pid \
> --lock-path=/usr/local/nginx/logs/nginx.lock

014-Nginx目录结构分析

conf目录下是相关配置文件。

关于CGI:

公共网关接口(Common Gateway Interface,CGI)是Web 服务器运行时外部程序的规范,按CGI 编写的程序可以扩展服务器功能。CGI 应用程序能与浏览器进行交互,还可通过数据API与数据库服务器等外部数据源进行通信,从数据库服务器中获取数据。格式化为HTML文档后,发送给浏览器,也可以将从浏览器获得的数据放到数据库中。几乎所有服务器都支持CGI,可用任何语言编写CGI,包括流行的C、C ++、Java、VB 和Delphi 等。CGI分为标准CGI和间接CGI两种。标准CGI使用命令行参数或环境变量表示服务器的详细请求,服务器与浏览器通信采用标准输入输出方式。间接CGI又称缓冲CGI,在CGI程序和CGI接口之间插入一个缓冲程序,缓冲程序与CGI接口间用标准输入输出进行通信。

log目录下的文件:

log/access.log:访问日志文件。

112.17.245.19 - - [27/Aug/2021:19:04:34 +0800] "GET /ab HTTP/1.1" 404 555 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36"

log/error.log:错误日志文件。

2021/08/27 19:04:34 [error] 25733#0: *29 open() "/usr/local/nginx/html/ab" failed (2: No such file or directory), client: 112.17.245.19, server: localhost, request: "GET /ab HTTP/1.1", host: "116.62.20.151"

log/nginx.pid:进程id。

[root@izbp1i6xv0q1dyvetecayhz sbin]# tree /usr/local/nginx/
/usr/local/nginx/
├── client_body_temp
├── conf
│   ├── fastcgi.conf
│   ├── fastcgi.conf.default
│   ├── fastcgi_params
│   ├── fastcgi_params.default
│   ├── koi-utf
│   ├── koi-win
│   ├── mime.types
│   ├── mime.types.default
│   ├── nginx.conf
│   ├── nginx.conf.default
│   ├── scgi_params
│   ├── scgi_params.default
│   ├── uwsgi_params
│   ├── uwsgi_params.default
│   └── win-utf
├── fastcgi_temp
├── html
│   ├── 50x.html
│   ├── assets
│   │   ├── css
│   │   │   ├── font-awesome.min.css
│   │   │   ├── index.css
│   │   │   ├── index.css.map
│   │   │   └── typo.css
│   │   ├── fonts
│   │   │   ├── FontAwesome.otf
│   │   │   ├── fontawesome-webfont.eot
│   │   │   ├── fontawesome-webfont.svg
│   │   │   ├── fontawesome-webfont.ttf
│   │   │   ├── fontawesome-webfont.woff
│   │   │   └── fontawesome-webfont.woff2
│   │   ├── images
│   │   │   ├── avatar.jpg
│   │   │   ├── background.png
│   │   │   ├── favicon.ico
│   │   │   ├── ip.png
│   │   │   └── pc.png
│   │   ├── js
│   │   │   └── index.js
│   │   └── sass
│   │       ├── components
│   │       │   ├── _container.scss
│   │       │   ├── _custom.scss
│   │       │   ├── _footer.scss
│   │       │   ├── _global.scss
│   │       │   └── _header.scss
│   │       └── index.scss
│   ├── index.html
│   ├── index.html.bak
│   ├── LICENSE
│   └── README.md
├── logs
│   ├── access.log
│   ├── error.log
│   └── nginx.pid
├── proxy_temp
├── sbin
│   └── nginx
├── scgi_temp
└── uwsgi_temp

? 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

015-Nginx服务器启停方式介绍

分为两种:

  • Nginx的信号控制
  • Nginx的命令行控制

016-Nginx服务的信号控制

查看当前Nginx的进程:

[root@izbp1i6xv0q1dyvetecayhz logs]# ps -ef | grep nginx
root     25732     1  0 18:39 ?        00:00:00 nginx: master process ./nginx
nobody   25733 25732  0 18:39 ?        00:00:00 nginx: worker process
root     26035 25041  0 19:21 pts/0    00:00:00 grep --color=auto 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指令
  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`

017-Nginx服务的信号控制之USR2

#查看当前Nginx的进程状态
[root@izbp1i6xv0q1dyvetecayhz ~]# ps -ef | grep nginx
root     26088     1  0 19:30 ?        00:00:00 nginx: master process ./nginx
nobody   26089 26088  0 19:30 ?        00:00:00 nginx: worker process
root     26443 26397  0 20:26 pts/1    00:00:00 grep --color=auto nginx
#发送USR2信号
[root@izbp1i6xv0q1dyvetecayhz ~]# kill -USR2 26088
[root@izbp1i6xv0q1dyvetecayhz ~]# cd /usr/local/nginx/
#nginx.pid.olbbin文件记录了旧进程的pid
[root@izbp1i6xv0q1dyvetecayhz nginx]# tree logs/
logs/
├── access.log
├── error.log
├── nginx.pid
└── nginx.pid.oldbin

0 directories, 4 files
[root@izbp1i6xv0q1dyvetecayhz nginx]# cat logs/nginx.pid.oldbin 
26088
#旧进程和新进程共存
[root@izbp1i6xv0q1dyvetecayhz nginx]# ps -ef | grep nginx
root     26088     1  0 19:30 ?        00:00:00 nginx: master process ./nginx
nobody   26089 26088  0 19:30 ?        00:00:00 nginx: worker process
root     26446 26088  0 20:26 ?        00:00:00 nginx: master process ./nginx
nobody   26447 26446  0 20:26 ?        00:00:00 nginx: worker process
root     26461 26397  0 20:27 pts/1    00:00:00 grep --color=auto nginx
#杀死旧进程
[root@izbp1i6xv0q1dyvetecayhz nginx]# kill -QUIT 26088
#查看当前Nginx的进程状态
[root@izbp1i6xv0q1dyvetecayhz nginx]# ps -ef | grep nginx
root     26446     1  0 20:26 ?        00:00:00 nginx: master process ./nginx
nobody   26447 26446  0 20:26 ?        00:00:00 nginx: worker process
root     26465 26397  0 20:28 pts/1    00:00:00 grep --color=auto nginx

发送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`

在这里插入图片描述

未完待续

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-28 09:45:32  更:2021-08-28 09:47:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 11:57:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码