欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > 【云原生】如何学会nginx?还好你来了

【云原生】如何学会nginx?还好你来了

2024/10/24 18:21:43 来源:https://blog.csdn.net/m0_64600810/article/details/141232216  浏览:    关键词:【云原生】如何学会nginx?还好你来了

一、实验环境

1、主机:任意版本(本作者使用的是RHEL9.4)

2、防火墙和 selinx处于关闭状态

3、官方源码包下载地址:https://nginx.org/en/download.html

二、实验内容

1、nginx的源码编译

(1)安装库

dnf install gcc pcre-devel zlib-devel openssl-devel -y

 (2)将 24 版本的 nginx 安装包拖入虚拟机,并进行解压

(3)建立 nginx 用户

useradd -s /sbin/nologin -M nginx

(4)检查系统环境、依赖库等,根据指定的参数和系统的实际情况生成相应的Makefile和其他配置文件,这些文件将用于后续的编译和安装过程(使用 ./configure --help 来查看模块)

(5) 将构建好的软件安装到指定的位置

make && make install

(6)设置环境变量

(7)查看版本信息

2、nginx的平滑升级及版本回滚

2.1 平滑升级

(1)将 26 版本的 nginx 安装包拖入虚拟机,并进行解压

(3) 编译 26 版本

(4)查看两个版本

(5)把之前的旧版的nginx命令备份

(6)把新版本的nginx命令复制过去

(7)开启 nginx

(8)平滑升级可执行程序

 (9)回收旧版本

(10) 检查版本信息

2.2 回滚

(1)把新版本的nginx命令备份

(2)旧版本覆盖新版本

(3)重启加载旧进程

(4)回收新版本

(5)检查版本信息

3、nginx命令参数

(1)-v:显示版本

 (2)-V:显示版本和编译参数

(3)-t:测试配置文件是否出错

(4)-T:测试并打印

(5)-q:静默模式 (这个操作后看不出来变化,作者这里是在已经启动的状态下给大家测试,主打一个我敲你看)

(6)-s reload:重启 nginx

观察进程号变化,发现已经重启。

(7)-g:设置全局命令,注意和配置文件不要同时配置,否则冲突

配置文件内容:

此时配置文件设置1个nginx,当我们设置6时,就会出现下面报错内容:

4、nginx启动文件编写

(1)启动文件脚本编写

(2)重新加载 Systemd 配置,使新的或修改过的服务生效

#重新加载配置文件
systemctl daemon-reload#启动nginx
systemctl start nginx

5、nginx全局参数优化

(1)下载测试工具

dnf install httpd-tools -y

(2)查看

此时发现运行最大次数处于1024次:

当我们测试连接数量为10000,变化链接数为5000时,系统会给我们反馈说运行次数太多的错误:

(3)修改配置文件

vim /etc/security/limits.conf

vim /usr/local/nginx/conf/nginx.conf

(4)再次查看

发现运行次数变为100000:

再次运行:

此时运行成功!!!此实验结束!!

额外小知识:

双核心且进程绑定状态(可以写成 01 和 10)

6、location用法 

在做这个实验之前,我们来做一个配置环境的小实验,即 nginx 配置中的 root 和 alias

首先,在配置文件中写入使用 epoll 模型(不写入的话我们使用的是 poll 模型,那我们为什么使用 epoll 模型呢?其实是因为它相较于更稳定,作为一个高级的工程师来说,我们当然使用更稳定 的模型)和定义子配置文件路径:

vim /usr/local/nginx/conf/nginx.conf

 

接着,创建虚拟主机网页目录:

#创建网站目录
mkdir -p /data/web/html#写入网页内容
echo www.moon.com > /data/web/html/index.html

 再接着,创建虚拟主机网站配置:

vim /usr/local/nginx/conf.d/vhost.conf

进行校验并重启:

本地写入解析:

路径:C:\Windows\System32\drivers\etc下的hosts文件

最后,进行测试:

当网页出来我们想要的内容时,这个实验就结束啦!!!我们这个实验也是为接下来的实验进行提前的环境配置。

那么我们接下来进行我们的 location 用法的实验:

前提:

参数

参数说明

=只能精确指定文件,需要请求字串与uri精确匹配,大小敏感
^~

用于标准uri前,表示包含正则表达式,并且匹配以指定的正则表达式开头

对uri的最左边部分做匹配检查,不区分字符大小写

~用于标准uri前,表示包含正则表达式,并且区分大小写
~*用于标准uri前,表示包含正则表达式,并且不区分大写
\用于标准uri前,表示包含正则表达式并且转义字符。可以将 . * ?等转义为普通符号
不带符号匹配起始于此uri的所有的uri

匹配优先级从高到低:(=, ^~, ~,~*, 不带符号 )

(1)添加网页目录

(2)修改子配置文件

vim /usr/local/nginx/conf.d/vhost.conf

重启:

nginx -s reload

 (3)查看(注意:每注释一个都要重启)

~和~*比较:
对目录和文件发现谁在前面显示谁,即优先级相同(~ = ~*)

~在前面时:

~*在前面时: 

 

对目录:[web4(~)= web5(~*)] > web1(不带符号)> web3(^~)

                =不能指定目录

第一个:

 

第二个:

第三个:

 

第四个:

 

第五个:

 

对文件:web2(=)> [web4(~)= web5(~*)] > web1(不带符号)> web3(^~)

第一个:

第二个:

第三个:

第四个:

第五个:

7、nginx的用户认证

(1)创建两个用户

(2)创建网页目录

 

(3)编辑配置文件

vim /usr/local/nginx/conf.d/vhost.conf

(4)重启并测试

输入账号密码跳转: 

 8、自定义错误页面

注意:这个是40X的报错页面

(1)创建网页目录

(2)编辑配置文件

vim /usr/local/nginx/conf.d/vhost.conf

 

(3)重启后查看

9、自定义日志

(1)创建日志目录

(2)编辑配置文件

vim /usr/local/nginx/conf.d/vhost.conf

(3)重启后查看

10、nginx文件检测

注意:这个是500的报错页面

实验前记得添加虚拟机的本地解析

(1)创建文件检测错误页面

(2)编辑配置文件

vim /usr/local/nginx/conf.d/vhost.conf

(3)重启后测试

 

11、nginx长链接控制

(1)下载测试工具

dnf install telnet -y

(2) 修改配置文件

vim /usr/local/nginx/conf/nginx.conf

(3)查看报文

这两行在接下来测试时需要自己打入,因为我们测试是浏览器,所以这些报文只能自己手打

(4)重启后测试

注意:上一个实验测试时我们把网页删除了,这里我们一定要添加上,否则会出现文件检测的失败页面

接下来开始我们的测试:

12、nginx下载服务器

(1)创建目录并在目录下制作一个文件

(2)编辑子配置文件 

vim /usr/local/nginx/conf.d/vhost.conf

 

autoindex on:自动文件索引功能,默为off

autoindex_localtime:显示本机时间而非GMT(格林威治)时间,默认off

autoindex_exact_size off:计算文件确切大小(单位bytes),off 显示大概大小(单位K、 M),默认on

limit_rate 1024k:限制响应客户端传输速率(除GET和HEAD以外的所有方法)

(3)重启并测试

网页测试:

下载测试: 

 

13、nginx的状态页面

(1)编辑配置文件

vim /usr/local/nginx/conf.d/vhost.conf

 

(2)重启后查看页面

此时出现了状态页用于输出nginx的基本状态信息:

解释基本状态信息:

  • Active connections:当前处于活动状态的客户端连接数包括连接等待空闲连接数=reading+writing+waiting
  • accepts:统计总值,Nginx自启动后已经接受的客户端请求连接的总数
  • handled:统计总值,Nginx自启动后已经处理完成的客户端请求连接总数,通常等于accepts,除非有因worker_connections限制等被拒绝的连接
  • requests:统计总值,Nginx自启动后客户端发来的总的请求数
  • Reading:当前状态,正在读取客户端请求报文首部的连接的连接数,数值越大,说明排队现象严重,性能不足
  • Writing:当前状态,正在向客户端发送响应报文过程中的连接数,数值越大,说明访问量很大
  • Waiting:当前状态,正在等待客户端发出请求的空闲连接数,开启 keep-alive的情况下,这个值等于active –(reading+writing)

(3)将页面设置访问权限

此页面可以说是非常重要的页面,工程师们要注意不能被用户随意访问,我们可以设置之前实验做到的加密认证用户访问,但作者这里选择172.25.254.1这个IP下才可以访问

vim /usr/local/nginx/conf.d/vhost.conf

(4)重启后测试

此时访问被拒绝:

14、nginx的压缩功能

(1)设置压缩功能

vim /usr/local/nginx/conf/nginx.conf

 (2)制作两个文件,一个小于1K,一个大于1K

作者这里是 small.html 为小于1K,/usr/local/nginx/logs/access.log 为大于1K

(3)测试

当压缩小于1K的文件时,发现并没有被压缩:

当压缩大于1K的文件时,发现有被压缩:

至此,我们的实验就成功啦!!! 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com