当前位置: 首页 > news >正文

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

image.png

连接状态模块

模块简介

使用连接状态模块可以通过网页的形式实时的显示用户的连接信息。

主要作用

展示用户和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 |

  • 访问页面

image.png

随机主页模块

模块简介

使用随机主页模块,可以实现用户访问页面时给予其指定的随机页面。

主要作用

将主页设置成随机页面,是一种微调更新机制。
模块名称: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

注意:隐藏文件不会被随机选取。
image.png
image.png
image.png

替换模块

模块简介

主要作用

为网站快速提供替换网页内容服务,临时解决错误页面问题。
模块名称: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

image.png

文件压缩模块

模块简介

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的基础上添加随机主页模块。

  1. 检查随机主页模块是否安装
/usr/local/nginx/sbin/nginx -V 2>&1 | grep random_index
  1. 备份原Nginx二进制文件及配置
tar -cvf /usr/local/nginx_old_1.24.0.tgz /usr/local/nginx
  1. 添加随机主页模块
#进入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
  1. 进程make操作

注意:参照编译安装Nginx的方法安装,但是只需要执行make,千万不要make install

make
  1. 复制新的Nginx二进制文件,进入新的Nginx安装包
cp /usr/local/nginx-1.24.0/objs/nginx /usr/local/nginx/sbin/
  1. 检查新的Nginx是否正常
/usr/local/nginx/sbin/nginx -t
  1. 给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
  1. 关闭旧Nginx进程
kill -WINCH `cat /usr/local/nginx/logs/nginx.pid.oldbin`
  1. 结束工作进程,完成此次平滑升级
kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin`
  1. 查看模块是否添加成功
/usr/local/nginx/sbin/nginx -V 2>&1 | grep random_index

平滑升级–Nginx版本升级

将nginx 1.24.0升级到1.25.3

  1. 备份原Nginx二进制文件及配置
tar -cvf /usr/local/nginx_old_1.24.0.tgz /usr/local/nginx
  1. 查看原Nginx安装的模块
/usr/local/nginx/sbin/nginx -V
  1. 下载Nginx 1.25.3的安装包
wget https://nginx.org/download/nginx-1.25.3.tar.gz
  1. 解压并编译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
  1. 进行make操作

注意:参照编译安装Nginx的方法安装,但是只需要执行make,千万不要make install

make
  1. 拷贝Nginx 1.25.3版本的二进制文件到1.24.0版本的进程目录
cp /usr/local/nginx-1.25.3/objs/nginx /usr/local/nginx/sbin/
  1. 启动新的主进程,实现热升级
kill -USER2 `cat /usr/local/nginx/logs/nginx.pid`
  1. 查看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 等跨服务器传输命令时需要手动输入用户名的密码才可进行文件传输&#xff…...

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 &#xff…...

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个全局热备硬盘。 数据存储中&#xff0…...

企业微信变更主体怎么改?

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

常用生理眼电信号整理合集 (EOG)

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

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

爬虫基础学习day2

# 爬虫设计领域 工商&#xff1a;企查查、天眼查短视频&#xff1a;抖音、快手、西瓜 ---> 飞瓜电商&#xff1a;京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空&#xff1a;抓取所有航空公司价格 ---> 去哪儿自媒体&#xff1a;采集自媒体数据进…...

vue3+vite项目中使用.env文件环境变量方法

vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量&#xff0c;这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

Pinocchio 库详解及其在足式机器人上的应用

Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库&#xff0c;专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性&#xff0c;并提供了一个通用的框架&…...