04. Nginx入门-Nginx WEB模块
测试环境
此处使用的yum安装的Nginx路径。
此处域名均在本地配置hosts。
主配置文件
路径:/etc/nginx/nginx.conf
user nginx;
worker_processes auto;error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;events {worker_connections 1024;
}http {include /etc/nginx/mime.types;default_type application/octet-stream;log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log /var/log/nginx/access.log main;sendfile on;#tcp_nopush on;keepalive_timeout 65;#gzip on;include /etc/nginx/conf.d/*.conf;
}
子配置文件
路径:/etc/nginx/conf.d/wangmingqu.conf
server {listen 80;server_name wang.wangmingqu.com;charset utf-8;location / {root /www/wangmingqu/;index index.html index.htm;}
}
测试数据
#用于测试连接状态
mkdir -p /www/wangmingqu/
echo "王茗渠测试页面" > /www/wangmingqu/index.html#用于测试随机页面
mkdir -p /www/wangmingqu/random
echo "wang 王茗渠" > /www/wangmingqu/random/wang.html
echo "ming 王茗渠" > /www/wangmingqu/random/ming.html
echo "qu 王茗渠" > /www/wangmingqu/random/qu.html
echo "wangmingqu 王茗渠" > /www/wangmingqu/random/.wangmingqu.html
检查Nginx
nginx -t
systemctl reload nginx
验证Nginx
连接状态模块
模块简介
使用连接状态模块可以通过网页的形式实时的显示用户的连接信息。
主要作用
展示用户和Nginx链接数量信息。
模块名称:http_stub_status_module
配置范围
server标签下的location标签中。
对哪个网站有链接状态查看需求的,就在此网站的server下新建location标签配置“stub_status”。
模块应用
查看模块是否安装
nginx -V 2>&1 | grep stub_status
启动连接状态模块
路径:/etc/nginx/conf.d/wangmingqu.conf
server {listen 80;server_name wang.wangmingqu.com;charset utf-8;location / {root /www/wangmingqu/;index index.html index.htm;}location /nginx_status { #定义访问“/nginx_status”才能查看到连接状态stub_status; #启动连接状态模块allow all; #允许哪些IP地址可以访问此页面}
}
检查Nginx
nginx -t
systemctl reload nginx
验证Nginx
-
页面解释
| 关键字 | 解释 |
| — | — |
| Active connections | 活跃的连接数,即多少人连接 |
| server | 总连接数 |
| accepts | 成功连接数 |
| handled requests | 请求的次数 |
| Reading | 读取客户端header的信息数,即请求头 |
| Writing | 返回给客户端的header的信息数,即响应头 |
| Waiting | 等待的请求数,原因是开启了keepalive | -
访问页面
随机主页模块
模块简介
使用随机主页模块,可以实现用户访问页面时给予其指定的随机页面。
主要作用
将主页设置成随机页面,是一种微调更新机制。
模块名称:http_random_index_module
配置范围
server标签下的location标签中。
对哪个网站有随机页面需求的,就在此网站的server下新建location标签配置“random_index”。
模块应用
查看模块是否安装
nginx -V 2>&1 | grep random_index
启动随机页面模块
路径:/etc/nginx/conf.d/random.conf
server {listen 80;server_name wang.mingqu.com;charset utf-8;location / {root /www/wangmingqu/random/;random_index on;}
}
检查Nginx
nginx -t
systemctl reload nginx
验证Nginx
注意:隐藏文件不会被随机选取。
替换模块
模块简介
主要作用
为网站快速提供替换网页内容服务,临时解决错误页面问题。
模块名称:http_sub_module
配置范围
server标签下的location标签中。
对哪个网站有替换页面需求的,就在此网站的server标签下配置。
模块应用
查看模块是否安装
nginx -V 2>&1 | grep sub_module
启动替换模块
路径:/etc/nginx/conf.d/default.conf
server {listen 80;server_name localhost;sub_fileter nginx "my_nginx_test"; #将nginx替换成my_nginx_testsub_filter_once on; #仅替换一次关键字#sub_filter_once off; #默认仅替换一次关键字,关闭后全局替换location / {root /usr/share/nginx/html;index index.html index.htm;}
}
检查Nginx
nginx -t
systemctl reload nginx
验证Nginx
文件压缩模块
模块简介
Nginx文件压缩模块是http_gzip_static_module、with-http_gunzip_module、ngx_http_gzip_module三个模块对请求中的压缩文件进行分析和处理的。
主要作用
使文件传输前,进行压缩,提升传输效率。
模块名称:http_gzip_static_module、http_gunzip_module
配置范围
文件压缩模块可以配置在http、server、location标签中。
http标签中配置,表示全局设置;
server标签中配置,表示网站设置;
location标签中配置,表示某个匹配设置;
模块应用
查看模块是否安装
nginx -V 2>&1 | grep zip
注意:查找中可能缺少ngx_http_gzip_module,但是不影响使用。
测试文件准备
准备一个大于2M的文件效果最好。
启动文件压缩模块
server {listen 80;server_name wang.wangmingqu.com;charset utf-8;gzip on; #启动gzip模块,默认关闭即gzip offgzip_comp_level 5; #指定gzip模块的压缩级别,级别有1-9,级别越高压缩比例越大gzip_http_version 1.1; #指定gzip使用的版本,目前有1.0和1.1两个版本,使用最新的就可以gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png; #指定可以压缩的类型gzip_static on; #静态文件压缩启动location / {root /www/wangmingqu/;index index.html index.htm;}location /nginx_status {stub_status;allow all;}
}
检查Nginx
nginx -t
systemctl reload nginx
验证Nginx
压缩以后用户接受的文件会有一定比例的压缩。
页面缓存模块
模块简介
主要作用
优化用户访问、加速用户访问页面的服务。
页面缓存可以减少服务器压力。
缺点影响网站的实时性。
模块名称:ngx_http_headers_module
配置范围
文件压缩模块可以配置在http、server、location标签中。
http标签中配置,表示全局设置;
server标签中配置,表示网站设置;
location标签中配置,表示某个匹配设置;
模块应用
查看模块是否安装
模块默认安装
启动页面缓存模块
路径:/etc/nginx/conf.d/wangmingqu.conf
server {listen 80;server_name wang.wangmingqu.com;charset utf-8;location / {root /www/wangmingqu/;index index.html index.htm;expires 24h; #设置页面缓存24小时,默认情况下是关闭的#expires off; #默认关闭;#expires -1; #表示永远过期;#expires max; #指定值为10年;}location /nginx_status {stub_status;allow all;}
}
检查Nginx
nginx -t
systemctl reload nginx
防盗链模块
模块简介
主要作用
防止其他网站盗用本站链接。
模块名称:ngx_http_referer_module
配置范围
可以配置在server、location标签。
模块应用
启动防盗链模块
server {listen 80;server_name wang.mingqu.com;charset utf-8;location / {root /www/wangmingqu/;index index.html index.htm;valid_referes none blocked wang.mingqu.com server_name ming.wangmingqu.com; #禁止引用链接,锁定wang.mingqu.com,允许ming.wangmingqu.com可以引用链接if ($invalid_referer){ #当有人访问时return 403; #返回403}}
}
- 生成环境下配置
server {listen 80;server_name wang.mingqu.com;charset utf-8;location / {root /www/wangmingqu/;index index.html index.htm;}location ~*\.(gif|jpg|png|bmp)${root /www/wangmingqu/;valid_referes none blockd *.qfcloud.top server_names ~tianyun~\.google\.~\.baidu\;if ($invalid_referer){return 403;}}
}
检查Nginx
nginx -t
systemctl reload nginx
模块安装
如果安装好的Nginx中缺少相关模块,可以采用平滑升级的方式解决。
平滑升级原理
- 在不停掉老进程的情况下,启动新进程。
- 老进程负责处理仍然没有处理完的请求,但不接受处理新请求。
- 新进程接受新请求。
- 老进程处理完所有请求,关闭所有链接后停止。
平滑升级的信号
主进程支持的信号
- TERM(或INT):立即退出;
- QUIT:等待请求处理结束后再退出;
- KILL:强制终止进程;
- HUP:重新加载配置文件,使用新的配置启动工作进程,并逐步关闭旧进程;
- USR1:重新打开日志文件;
- USR2:启动新的主进程,实现热升级;
- WINCH:逐步关闭工作进程;
工作进程支持的信号
- TERM(或INT):立即退出;
- QUIT:等待请求处理结束后再退出;
- USR1:重新打开日志文件;
平滑升级
平滑升级–Nginx添加模块
在已经安装Nginx的基础上添加随机主页模块。
- 检查随机主页模块是否安装
/usr/local/nginx/sbin/nginx -V 2>&1 | grep random_index
- 备份原Nginx二进制文件及配置
tar -cvf /usr/local/nginx_old_1.24.0.tgz /usr/local/nginx
- 添加随机主页模块
#进入Nginx解压目录
cd /usr/local/nginx-1.24.0/#添加模块(添加是需要复制原有模块)
./configure --prefix=/usr/local/nginx \
--user=nginx --group=nginx \
--with-http_realip_module \
--with-http_v2_module \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-http_gzip_static_module \
--with-stream \
--with-stream_ssl_module \
--with-http_sub_module \
--with-http_random_index_module
- 进程make操作
注意:参照编译安装Nginx的方法安装,但是只需要执行make,千万不要make install。
make
- 复制新的Nginx二进制文件,进入新的Nginx安装包
cp /usr/local/nginx-1.24.0/objs/nginx /usr/local/nginx/sbin/
- 检查新的Nginx是否正常
/usr/local/nginx/sbin/nginx -t
- 给Nginx发送平滑升级信号
注意:此处的nginx.pid文件路径
kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`
查看nginx.pid,发现有一个新的nginx.pid.oldbin
ll /usr/local/nginx/logs/-rw-r--r-- 1 root root 5 Sep 25 13:32 nginx.pid
-rw-r--r-- 1 root root 5 Sep 25 13:27 nginx.pid.oldbin
- 关闭旧Nginx进程
kill -WINCH `cat /usr/local/nginx/logs/nginx.pid.oldbin`
- 结束工作进程,完成此次平滑升级
kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin`
- 查看模块是否添加成功
/usr/local/nginx/sbin/nginx -V 2>&1 | grep random_index
平滑升级–Nginx版本升级
将nginx 1.24.0升级到1.25.3
- 备份原Nginx二进制文件及配置
tar -cvf /usr/local/nginx_old_1.24.0.tgz /usr/local/nginx
- 查看原Nginx安装的模块
/usr/local/nginx/sbin/nginx -V
- 下载Nginx 1.25.3的安装包
wget https://nginx.org/download/nginx-1.25.3.tar.gz
- 解压并编译Nginx 1.25.3
注意:编译新版本时一定要使用原有的WEB模块,否则将影响Nginx应用。
tar -zxvf nginx-1.25.3.tar.gz -C /usr/local/
cd /usr/local/nginx-1.25.3/./configure --prefix=/usr/local/nginx \
--user=nginx --group=nginx \
--with-http_realip_module \
--with-http_v2_module \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-http_gzip_static_module \
--with-stream \
--with-stream_ssl_module \
--with-http_sub_module \
--with-http_random_index_module
- 进行make操作
注意:参照编译安装Nginx的方法安装,但是只需要执行make,千万不要make install。
make
- 拷贝Nginx 1.25.3版本的二进制文件到1.24.0版本的进程目录
cp /usr/local/nginx-1.25.3/objs/nginx /usr/local/nginx/sbin/
- 启动新的主进程,实现热升级
kill -USER2 `cat /usr/local/nginx/logs/nginx.pid`
- 查看Nginx升级后的版本及WEB模块
/usr/local/nginx/sbin/nginx -V
相关文章:

04. Nginx入门-Nginx WEB模块
测试环境 此处使用的yum安装的Nginx路径。 此处域名均在本地配置hosts。 主配置文件 路径:/etc/nginx/nginx.conf user nginx; worker_processes auto;error_log /var/log/nginx/error.log notice; pid /var/run/nginx.pid;events {worker_connection…...
Python在信息安全领域中具有重要的作用
Python在信息安全领域中具有重要的作用。下面是几个方面的说明: 网络安全:Python提供了一系列用于网络安全的库和工具,例如Scapy、Nmap等。这些工具可以应用于漏洞扫描、网络流量分析、数据包嗅探等操作,帮助检测和防御网络攻击。…...
Linux 定时备份文件到另一台服务器
1. 需求 用户要求将 Tomcat 的日志文件定时备份到另一台服务器。同事给我提供了一个写好的 java 框架,但实在不想给用户再维护另一个服务了,所以另寻他法。 2. 问题 使用 scp 等跨服务器传输命令时需要手动输入用户名的密码才可进行文件传输ÿ…...

C++输入输出(I\O)
我们知道C是由C语言发展而来的,几乎完全兼容C语言,换句话说,你可以在C里面编译C语言代码。如下图: C语言是面向过程的语言,C在C语言之上增加了面向对象以及泛型编程机制,因此C更适合中大型程序的开发,然而C…...

基本设计模式
单例模式 ES5 function Duck1(name:string){this.namenamethis.instancenull }Duck1.prototype.getNamefunction(){console.log(this.name) }Duck1.getInstancefunction(name:string){if(!this.instance){this.instance new Duck1(name)} } const aDuck1.getInstance(a) const…...

双通道音频功率放大电路,外接元件少, 通道分离性好,3V 的低压下可正常使用——D2025
D2025 为立体声音频功率放大集成电路,适用于各类袖珍或便携式立体声 收录机中作功率放放大器。 D2025 采用 DIP16 封装形式。 主要特点: 适用于立体声或 BTL 工作模式 外接元件少 通道分离性好 电源电压范围宽(3V~12V ÿ…...
Linux 内核获取函数size
方式一:通过objdump -t直接从目标文件中获取函数size #objdump -t file_unread.o | grep hook 0000000000000030 l F .text 000000000000012f hook_vfs_read0000000000000030 l F .text 000000000000012f hook_vfs_read各个字段说明 0000000000000030&#x…...

Python+neo4j构建豆瓣电影知识图谱
文章目录 数据来源数据整理导入节点和关系导入使用Subgraph批量导入节点和关系多标签实体和实体去重数据来源 http://www.openkg.cn/dataset/douban-movie-kg 该网址拥有丰富的中文知识图谱数据集,OpenKG(Open Knowledge Graph),可供研究人员使用研究。 数据整理导入 impor…...

DolphinScheduler——介绍及架构设计
目录 一、DolphinScheduler介绍 1.1 概述 1.2 特性 1.2.1 简单易用 1.2.2 丰富的使用场景 1.2.3 High Reliability 1.2.4 High Scalability 1.3 名词解释 1.3.1 名词解释 1.3.2 模块介绍 二、DolphinScheduler架构原理 2.1 系统架构图 2.2 架构说明 2.2.1 Maste…...
【Python】约瑟夫环问题
任务描述 据说著名历史学家 Josephus有过以下的故事:Josephus及他的朋友共41人围成一个圆圈,由第1个人开始报数,每数到3该人就必须出去,然后再由下一个人重新报数,直到圆圈上少于3人为止。Josephus 将朋友与自己安排在…...

Python成功解决AttributeError: ‘Series‘ object has no attribute ‘set_value‘
Python成功解决AttributeError: ‘Series‘ object has no attribute ‘set_value‘ 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&am…...

基于springboot+vue的医院药品管理系统
博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 主要内容:毕业设计(Javaweb项目|小程序|Pyt…...

Python爬虫——Urllib库-1
这几天都在为了蓝桥杯做准备,一直在刷算法题,确实刷算法题的过程是及其的枯燥且枯燥的。于是我还是决定给自己找点成就感出来,那么Python的爬虫就这样开始学习了。 注:文章源于观看尚硅谷爬虫视频后笔记 目录 Urllib库 基本使…...

瑞_Redis_短信登录(一)
文章目录 项目介绍1 项目准备1.1 导入SQL1.2 导入后端项目1.2 导入前端项目 🙊 前言:本文章为瑞_系列专栏之《Redis》的实战篇的短信登录章节的项目准备小节。由于博主是从B站黑马程序员的《Redis》学习其相关知识,所以本系列专栏主要是针对该…...
《剑指 Offer》专项突破版 - 面试题 70 : 排序数组中只出现一次的数字(C++ 实现)
题目链接:LCR 070. 有序数组中的单一元素 - 力扣(LeetCode) 题目: 在一个排序的数组中,除一个数字只出现一次之外,其他数字都出现了两次,请找出这个唯一只出现一次的数字。例如,在…...

Linux安全加固功能
提示:工具下载链接在文章最后 目录 一.加固功能介绍二.配置加固功能1.配置安全加固功能1.1 开放目前设备监听的所有端口1.2 只开放80、443、20、21、22端口1.3 防火墙配置工具1.3.1 开放允许访问的端口1.3.2 删除允许访问的端口1.3.3 添加IP地址允许访问规则1.3.4 添加IP地址禁…...

最新AI系统ChatGPT网站H5系统源码,支持Midjourney绘画
一、前言 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,那么如何搭建部署AI创作ChatGPT?小编这里写一个详细图文教程吧。已支持GPT…...

【服务器数据恢复】昆腾存储中raid5磁盘阵列数据恢复案例
服务器数据恢复环境&故障: 10个磁盘柜,每个磁盘柜配24块硬盘。9个磁盘柜用于存储数据,1个磁盘柜用于存储元数据。 元数据存储中24块硬盘,组建了9组RAID1阵列1组RAID10阵列,4个全局热备硬盘。 数据存储中࿰…...

企业微信变更主体怎么改?
企业微信变更主体有什么作用?现在很多公司都用企业微信来加客户,有时候辛辛苦苦积累了很多客户,但是公司却因为各种各样的原因需要注销,那么就需要通过企业微信变更主体的方法,把企业微信绑定的公司更改为最新的。企业…...

常用生理眼电信号整理合集 (EOG)
目录 Sleep-EDF Sleep-EDF expanded Sleep-EDF 这些信号是从白人男性和女性(21-35 岁)中获得的,没有任何药物治疗;它们包含水平 EOG、FpzCz 和 PzOz EEG,每个采样频率为 100 Hz。 sc* 记录还包含颏下肌电图包络、口鼻…...

大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...

linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...

Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...
在树莓派上添加音频输入设备的几种方法
在树莓派上添加音频输入设备可以通过以下步骤完成,具体方法取决于设备类型(如USB麦克风、3.5mm接口麦克风或HDMI音频输入)。以下是详细指南: 1. 连接音频输入设备 USB麦克风/声卡:直接插入树莓派的USB接口。3.5mm麦克…...
十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建
【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...