【云原生】如何学会nginx?还好你来了(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 版本

注意:这里要添加echo-nginx-module-0.63的压缩包并进行解压

(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的文件时,发现有被压缩:

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

  • 18
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值