Nginx_高级篇

Nginx高级篇

笔者的nginx是跟着尚硅谷的一明老师学的,课程分为两个部分共140多集,nginx中其实有很多的专业名词,和自己以前学过但又忘记的。当时就在笔记中记录了很多,不过在刚好100集的时候手贱把笔记给替换成一个空文件了QAQ,花了好几个小时想找回来,最后还是… 所以该文章只记录了100集往后的笔记。

nginx 的错误日志

在这里插入图片描述


查看树形结构,没有该命令的话 yum安装一下

image-20231220172104358


ssd

SSD是Solid State Drive(固态硬盘)的缩写。它是一种使用固态存储器(通常是 NAND 闪存)作为数据存储介质的数据存储设备。与传统的机械硬盘驱动器(HDD)不同,固态硬盘不包含可动的机械部件,而是通过闪存存储数据。
固态硬盘的主要特点包括:

  1. 速度快: 与机械硬盘相比,固态硬盘具有更快的读写速度。这是因为它不需要机械臂移动到正确的磁道或旋转磁盘来定位数据。
  2. 耐用性强: 由于没有移动部件,固态硬盘相对于机械硬盘来说更耐用,能够更好地抵抗震动和冲击。
  3. 能效高: 固态硬盘通常比机械硬盘消耗更少的电力,因为它们不需要电力来驱动旋转的磁盘或移动的机械臂。
  4. 轻薄小巧: 固态硬盘通常比机械硬盘体积小、重量轻,适用于轻便和便携设备。
  5. 无噪音: 由于没有机械部件的运动,固态硬盘工作时几乎无噪音。
    SSD在计算机领域得到了广泛的应用,用作操作系统和应用程序的存储设备,以提供更快的系统响应速度和更高的性能。

netstat
netstat -tulpn 命令用于显示系统上的网络连接和监听的端口,并列出它们对应的进程信息。以下是该命令中各选项的具体含义:

  • -t:显示TCP连接信息。
  • -u:显示UDP连接信息。
  • -l:显示监听的端口。
  • -p:显示与端口相关的进程信息。
  • -n:以数字形式显示端口和地址,而不进行域名解析。

文件句柄是什么意思

文件句柄(File Handle)是操作系统用于标识和跟踪打开文件的一种数据结构或标识符。每当程序打开一个文件时,操作系统会为该文件分配一个唯一的文件句柄,用于标识该文件的访问。文件句柄通常是一个整数或其他唯一标识符。
文件句柄的主要作用包括:

  1. 标识文件: 文件句柄是用来唯一标识一个打开的文件。通过文件句柄,操作系统能够追踪文件的状态、位置和其他相关信息。
  2. 访问权限: 文件句柄可以包含有关文件访问权限的信息,确保只有具有适当权限的进程可以访问该文件。
  3. 文件状态: 文件句柄可以包含有关文件状态的信息,如文件的当前位置、打开模式(读、写、追加等)等。
  4. 资源管理: 文件句柄也有助于操作系统有效地管理文件资源。当程序不再需要打开的文件时,可以通过关闭文件句柄来释放相关资源。
    在编程中,程序员通常不直接操作文件句柄,而是使用高级的文件操作接口,如标准I/O库提供的函数(例如fopenfclosefwritefread等)来进行文件操作。这些函数在底层会使用文件句柄来管理文件。

image-20231223111907878

在Nginx中,@符号通常用于定义一个命名的location块,以便进行内部重定向。使用@符号是一种约定,它标志着这是一个命名的location。
例如,location @test中的@符号表示这是一个名为test的位置块,可以在配置文件的其他部分引用或进行内部重定向。
如果你不加@符号,那么Nginx会将该location视为一个正常的location块,而不是命名的位置块。在一些情况下,正常的location块可能用于直接处理请求而不进行内部重定向。
总体而言,@符号在这里是根据Nginx的约定来使用的,用于标识命名的位置块。


set是nginx的指令,用于设置一个变量,且变量名以$开头

set $variable_name value;

什么是openresty

OpenResty 是一个基于 Nginx 与 Lua 编程语言的高性能 Web 平台,它将 Nginx 作为核心,通过扩展 Nginx 的功能集合,使其支持使用 Lua 进行编程。这意味着可以利用 Nginx 的高性能特性,同时通过 Lua 语言灵活地编写各种 Web 应用程序、API 服务、甚至实现高度定制化的代理服务等。
OpenResty 的主要特点包括:

  1. 高性能的代理与负载均衡: 基于 Nginx 引擎,OpenResty 可以处理高并发的请求,支持代理、负载均衡等功能,保证系统的高性能和稳定性。
  2. Lua 扩展: OpenResty 使用 Lua 编程语言进行扩展,通过 Lua 脚本可以方便地实现各种自定义的功能,包括请求处理、响应处理、访问控制、缓存控制等。
  3. 模块化与扩展性: OpenResty 提供了丰富的模块和扩展功能,可以通过添加模块或自定义 Lua 脚本来满足不同场景下的需求,实现高度定制化的应用。
  4. 简化开发与部署: 使用 Lua 编程语言可以更快速地开发和调试应用逻辑,而且由于其基于 Nginx,部署和管理也相对简单。
    总体而言,OpenResty 提供了一种强大而灵活的 Web 平台,利用 Nginx 引擎和 Lua 编程语言的组合,使得开发者能够构建高性能、可扩展和高度定制化的 Web 应用和服务。

当我们重启nginx失败时,我们可以systemctl status nginx 或者 systemctl status nginx -l 来查看报错信息

image-20231223190513499


负载均衡和灰度发布

负载均衡和灰度发布是两个与系统架构和软件部署相关的概念。

  1. 负载均衡(Load Balancing):
    • 定义: 负载均衡是一种将网络或计算负载分布到多个服务器或网络路径上的技术,以确保每个服务器或路径都能够有效地处理负载并提高系统的性能、可用性和可伸缩性。
    • 工作原理: 负载均衡器(Load Balancer)接收来自客户端的请求,然后将请求分发到多个服务器中的一个,以避免某一服务器过载而影响系统性能。它可以基于不同的算法进行分发,如轮询、最小连接数等。
    • 优势: 提高系统的可靠性,确保单个服务器故障不影响整个系统的运行;提高系统的性能,通过分散负载使每个服务器都能更高效地处理请求。
  2. 灰度发布(Canary Release / Feature Toggling):
    • 定义: 灰度发布是一种渐进性的软件发布策略,它允许将新功能或更新逐步引入到生产环境中,而不是一次性全部推送给所有用户。这样可以在一段时间内仅向一小部分用户或服务器发布新版本,以在实际运行中评估其性能和稳定性。
    • 工作原理: 开发团队将新功能逐步引入生产环境,最初只对一小部分用户或服务器生效,然后逐渐扩大范围。这使得团队可以及时发现和解决潜在问题,而不会影响整个用户群体。
    • 优势: 降低发布新版本的风险,及早发现潜在问题;允许团队根据实际运行情况进行调整和改进;提供更好的用户体验,因为新功能不是突然性地推送给所有用户。
      这两个概念通常一起使用,负载均衡确保系统在面对不同负载时能够高效运行,而灰度发布则帮助团队更安全地引入新的软件版本和功能。

qps是什么

QPS 是指每秒查询率(Queries Per Second),用于衡量系统在每秒内能够处理的查询或请求的数量。在计算机领域中,QPS通常用于评估系统的性能和吞吐量。
QPS 的值越高,表示系统能够处理的请求数量越大,性能越好。对于一些服务,如数据库、Web服务器等,高 QPS 是一个重要的性能指标,特别是在高流量和大规模请求的情况下。
需要注意的是,QPS 不同于并发连接数。QPS 衡量的是每秒的请求数量,而并发连接数则是同时存在的连接数。在高并发的场景下,系统可能需要处理大量的并发连接,而 QPS 则关注每秒内实际完成的请求数。


线程和进程有什么区别

线程和进程都是操作系统中的基本执行单元,但它们之间存在几个关键区别:

  1. 定义
    • 进程(Process)进程是程序的实例。每个进程都有自己的独立内存空间、资源和执行状态。进程是操作系统资源分配的基本单位。
    • 线程(Thread):线程是进程中的一个执行路径。一个进程可以包含多个线程,这些线程共享进程的内存和资源。线程是CPU调度和执行的基本单位。
  2. 资源消耗
    • 进程:由于每个进程都有自己的独立内存空间和资源,所以创建和销毁进程通常比较消耗资源。
    • 线程:线程共享进程的资源,因此创建和切换线程的成本通常较低。
  3. 通信与同步
    • 进程:进程之间的通信通常需要使用更复杂的机制,如管道、消息队列或共享内存。
    • 线程:线程之间的通信和同步相对简单,可以通过共享变量或使用同步原语(如互斥锁、信号量)来实现。
  4. 独立性
    • 进程:进程是独立的执行实体,一个进程的崩溃通常不会影响其他进程。
    • 线程:由于线程共享同一个进程的内存和资源,一个线程的错误或崩溃可能会影响其他线程和整个进程。
  5. 灵活性与响应性
    • 进程:进程之间的切换和调度通常比较慢,因为需要保存和恢复各自的状态。
    • 线程:由于线程共享同一进程的地址空间和资源,线程之间的切换和调度通常更快,可以实现更高的响应性。
      综上所述,线程和进程在操作系统中有不同的角色和特性,合理地使用它们可以有效地提高系统的性能和资源利用率。

什么是ddos攻击

DDoS(分布式拒绝服务攻击)是一种网络攻击,旨在通过将大量恶意流量发送到目标服务器、网络或服务上,使其超出正常负荷范围,从而使合法用户无法访问或使用该服务。这类攻击通常由多个来源发起,使用大量的计算机或设备进行协同攻击,以增加攻击的规模和威力。
攻击者利用大量合法或被感染的计算机、物联网设备或服务器(这些设备构成了一个称为“僵尸网络”或“僵尸群”的网络)向目标发起大量请求,耗尽目标系统的带宽、处理能力或其他关键资源。这会导致目标系统变得不可用,无法正常响应合法用户的请求。
DDoS攻击的目的可以是多样化的,可能是为了勒索、报复、破坏业务、影响竞争对手或政治动机。防范DDoS攻击通常需要使用防火墙、反向代理、入侵检测系统(IDS)、流量过滤器和专门的DDoS防护服务,以便及时识别和过滤恶意流量,维持服务的可用性和稳定性。


.bat文件

.bat 文件是一种批处理文件,在 Windows 系统中被用来运行一系列的命令。它包含了一系列的命令行命令,这些命令通常按顺序执行,就像在命令提示符中逐个输入这些命令一样。.bat 文件可以用来自动化一些重复性的任务或执行一系列的操作。
这些文件使用文本编辑器创建,通常使用记事本或其他文本编辑软件。.bat 文件中包含的命令可以执行文件操作、运行程序、设置环境变量等等。它们提供了一种简便的方式来批量执行命令,比手动逐个输入命令更为高效。
例如,一个简单的 .bat 文件可能包含如下内容:

@echo off
echo Hello, this is a batch file!
pause

这个文件中的命令 @echo off 用于关闭在执行命令时显示命令本身的功能,echo Hello, this is a batch file! 用于输出一条消息,pause 用于暂停脚本的执行,直到用户按下任意键。


压测工具

image-20231223200416348


可以看到访问记录

image-20231223202728651

image-20231223203404464


nginx.org/en/docs – 看nginx的官网文档

image-20231224094031452


控制台监视某个文件变化 – tail -f xxx

image-20231224100614387


mkdir -p xxx 连同子目录一起创建


RPC是什么

RPC(Remote Procedure Call,远程过程调用)是一种计算机通信协议,用于请求在远程计算机或服务上执行一个子程序或过程。简单来说,它允许客户端应用程序通过网络调用服务端的函数或方法,就像调用本地函数一样。

主要特点

  1. 透明性: RPC让远程调用看起来像本地调用一样,隐藏了底层的网络细节。
  2. 同步或异步: 可以是同步或异步的调用。
  3. 数据传输: 通常使用如HTTP、TCP/IP等协议进行数据传输。
  4. 语言中立: RPC可以跨越不同的编程语言和操作系统。
  5. 编程模型: 通常有两种主要的编程模型:过程调用(如ONC RPC)和消息传递(如XML-RPC、SOAP)。

工作流程

  1. 请求阶段: 客户端应用程序调用本地代理,该代理负责封装调用信息,并通过网络发送给服务端。
  2. 处理阶段: 服务端接收到请求后,执行相应的远程过程,并将结果返回给客户端。
  3. 响应阶段: 客户端代理接收到响应后,解析结果,并将其返回给应用程序。

patch

在 Linux 中,patch 是一个用于应用补丁文件的命令。补丁文件包含了源文件的修改信息,patch 命令可以根据这些信息来修改源文件。下面是 patch 命令的基本用法:

patch [选项] [原始文件] < 补丁文件

其中,原始文件 是要应用补丁的源文件,补丁文件 包含了对源文件的修改。常见的选项包括:

  • -pN:指定路径级别,通常用于去掉文件路径前缀。例如,-p1 表示去掉第一个路径级别。
  • -i:指定补丁文件的路径,也可以使用标准输入(stdin)。
  • -R:反转补丁,即取消先前应用的补丁。
    示例:
# 应用补丁
patch -p1 < mypatch.patch
# 指定补丁文件的路径
patch -i /path/to/mypatch.patch -p1
# 反转补丁
patch -R -p1 < mypatch.patch

请确保在应用补丁之前备份你的文件,以防发生意外。此外,确保补丁文件与要修改的源文件匹配。


为啥nginx 在安装某个模块时,有时候只要make 就好了,有时候还要make install

在编译安装 Nginx 或其他软件模块时,makemake install 通常是构建和安装的两个不同步骤。

  1. make 这个步骤主要用于编译源代码并生成可执行文件。执行 make 会根据源代码中的 Makefile 文件进行编译,生成二进制文件或库文件,但它并不会将这些文件安装到系统中。通常,你可以在编译完成后直接在编译目录找到生成的可执行文件。
  2. make install 这个步骤是将编译生成的文件安装到系统中的指定位置。make install 命令将二进制文件、库文件、配置文件等复制到系统目录,使得软件在系统中可用。这通常包括将可执行文件复制到 /usr/local/bin、库文件复制到 /usr/local/lib 等。
    在有些情况下,特别是对于一些简单的软件或模块,你可能只需执行 make 就足够了,因为编译生成的文件已经在当前目录中。但对于一些复杂的软件或需要安装到系统中的模块,你可能需要执行 make install 将文件正确安装到系统路径。
    要了解确切的安装步骤,建议查阅软件包的官方文档或 README 文件。通常,这些文件会提供关于编译、安装以及可能的配置选项的详细说明。

./configure --prefix=/usr/local/nginx20 --add-module=/root/nginx_upstream_check_moudele-0.3.0

你的命令中包含了 ./configure,这是用于配置软件编译选项的常见命令。在这个命令中,你指定了 Nginx 的安装路径/usr/local/nginx20,并添加了一个模块 nginx_upstream_check_module-0.3.0


-c 可以在启动nginx可以指定使用哪个配置文件


./configure,这是用于配置软件编译选项的常见命令。在这个命令中,你指定了 Nginx 的安装路径/usr/local/nginx20,并添加了一个模块 nginx_upstream_check_module-0.3.0

-c 可以在启动nginx可以指定使用哪个配置文件


启动,关闭openresty

[外链图片转存中...(img-pP7d704i-1703561145991)]






此文章用于笔者记录学习,也希望对你有帮助

  • 23
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值