04. Nginx入门-Nginx WEB模块

news2024/12/23 16:18:06

测试环境

此处使用的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_test
    sub_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 off
  gzip_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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1489946.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用html网页播放多个视频的几种方法

前言 因为项目测试需要,我需要可以快速知道自己推流的多路视频流质量,于是我想到可以使用html网页来播放视频,实现效果极其简单,方法有好几种,以下是几种记录: 注意:测试过,VLC需要使…

97 spring 中的泛型类型注入

前言 呵呵 同样是 最近同事碰到的一个问题 他不太懂 英语, 看到的说明是 缺少一个 RedisTemplate 的实例, 但是找到了一个 RedisTemplate 的实例 呵呵 和我这里 spring 版本似乎是不太一样, 错误信息 有一些差异 以下环境基于 jdk8 spring-5.0.4-RELEASE 测试用例 BeanCon…

23种设计模式——工厂方法模式

定义: 一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其他子类。 工厂方法通用类图: 这个图更好理解 在工厂方法模式中,抽象产品类Product负责定义产品的共性,实现对事物最抽象的…

人大金仓KingbaseES:银河麒麟V10安装

人大金仓KingbaseES:银河麒麟V10安装 众所周知的原因,为了响应国家信创支持国产操作系统和数据库,现在我们公司的项目要从开源数据库PostgreSQL切换到人大金仓KingbaseES数据库(本质是早期版本的PostgreSQL)。使用的是…

自适应控制算法讲解-案例(附C代码)

目录 一、自适应控制算法的基本原理 二、自适应控制算法分类 三、案例 3.1自适应PID控制 1) 模型识别 2)动态调整PID参数逻辑 3)PID控制器 自适应控制算法是一种高级控制算法,用于处理那些参数不确定或者动态变化的系统。这类…

Elasticsearch:向量相似度计算 - 可笑的速度

作者:Chris Hegarty 任何向量数据库的核心都是距离函数,它确定两个向量的接近程度。 这些距离函数在索引和搜索期间执行多次。 当合并段或在图表中导航最近邻居时,大部分执行时间都花在比较向量的相似性上。 对这些距离函数进行微观优化是值…

AI-数学-高中-34概率-古典概率模型

原作者视频:【概率】【一数辞典】3古典概型_哔哩哔哩_bilibili 等可能性:每个样本点出现的可能性是相同的。 随机事件A的发生事件A的样本点数k / 样板空间总样本点数n。 示例1: 示例2:

[DevOps云实践] IaaC:通过CloudWatch Agent和自定义Metric监视服务器

[DevOps云实践] IaaC:通过CloudWatch Agent和自定义Metric监视服务器 现在有许多第三方工具可以用于监控EC2实例。尽管事实如此,我想为您提供使用AWS原生资源和工具(如AWS CloudWatch、CloudWatch Agent和CloudFormation)快速设置EC2监控所需的所有信息。 首先,您应该知…

2024.3.4

思维导图 作业1&#xff1a;广播 发送端&#xff1a; #include<myhead.h> int main(int argc, const char *argv[]) {//创建套接字int sfd socket(AF_INET,SOCK_DGRAM,0);if(sfd -1){perror("sockeet error");return -1;}//设置当前套接字允许广播属性int …

idea中引入新JDK环境

在不同的项目中往往会需要不同的运行环境&#xff0c;那么如何下载一个新的环境并运用到idea中呢&#xff1f; 下面给出的就是oracle官网&#xff0c;以JDK17为例教大家如何下载 Java Archive Downloads - GraalVM for JDK 17https://www.oracle.com/java/technologies/javase…

End-to-End Weakly-Supervised SemanticSegmentation with Transformers

摘要 弱监督语义分割&#xff08;WSSS&#xff09;使用图像级标签是一项重要且具有挑战性的任务。由于高训练效率&#xff0c;端到端的WSSS解决方案受到社区越来越多的关注。然而&#xff0c;当前的方法主要基于卷积神经网络&#xff0c;并未正确地探索全局信息&#xff0c;因…

在Visual Studio配置C++的netCDF库的方法

本文介绍在Windows电脑的Visual Studio软件中&#xff0c;配置C 语言最新版netCDF库的方法。 netCDF&#xff08;Network Common Data Form&#xff09;是一种用于存储、访问和共享科学数据的文件格式和库&#xff0c;其提供了一种灵活的方式来组织、描述和存储多维数据&#x…

【系统架构设计师考试大纲】

曾梦想执剑走天涯&#xff0c;我是程序猿【AK】 目录 简述概要知识图谱考试目标考试要求考试题目题型分析计算机基础知识&#xff08;20%&#xff09;信息化战略与规划&#xff08;9%&#xff09;软件工程&#xff08;25%&#xff09;系统架构设计&#xff08;35%&#xff09;信…

适用于 Windows 的7大数据恢复软件解决方案

数据丢失是数字世界中令人不快的一部分&#xff0c;它会在某一时刻影响许多计算机用户。很容易意外删除一些重要文件&#xff0c;这可能会在您努力恢复它们时带来不必要的压力。幸运的是&#xff0c;数据恢复软件可以帮助恢复已删除的文件&#xff0c;即使您没有备份它们。以下…

AI大模型与小模型之间的“脱胎”与“反哺”(第三篇)

51. **异构图神经网络集成&#xff08;Heterogeneous Graph Neural Network Integration&#xff09;**&#xff1a; 构建异构图神经网络来捕获和整合各行业间复杂的实体关系及属性信息。每个行业的小模型可视为一个子图&#xff0c;将它们整合进一个统一的大图模型中&#xff…

力扣206反转链表

206.反转链表 力扣题目链接(opens new window) 题意&#xff1a;反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 1&#xff0c;双指针 2&#xff0c;递归。递归参考双指针更容易写&#xff0c; 为什么不用头插…

学习JAVA的第十三天(基础)

目录 API之Arrays 将数组变成字符串 二分查找法查找元素 拷贝数组 填充数组 排序数组 Lambda表达式 集合的进阶 单列集合 体系结构 Collection API之Arrays 操作数组的工具类 将数组变成字符串 //将数组变成字符串char[] arr {a,b,c,d,e};System.out.println(Arra…

Linux-信号3_sigaction、volatile与SIGCHLD

文章目录 前言一、sigaction__sighandler_t sa_handler;__sigset_t sa_mask; 二、volatile关键字三、SIGCHLD方法一方法二 前言 本章内容主要对之前的内容做一些补充。 一、sigaction #include <signal.h> int sigaction(int signum, const struct sigaction *act,struc…

计数排序详解(附源码)

目录 思想&#xff1a; 源码&#xff1a; 思想&#xff1a; 计数排序&#xff1a;用一个数组记录按原始数据中&#xff0c;每个数据出现的次数 非常牛批的思路&#xff0c;没有用到比较 直接对每个数据进行计数 然后从计数的数组中&#xff0c;往回覆盖数据 从左到右&#xf…

解决Qtcreator搜狗输入法无法输入中文问题

由于搜狗输入法依赖fcitx&#xff0c;所以我们解决该问题的核心操作是为QtCreator提供支持fcitx 本系统环境说明&#xff1a;ubuntu22.04、Qt5.12.8、Qt6.6.1&#xff08;我安装了Qt5、Qt6&#xff09; 一、尝试拷贝系统自带libfcitxplatforminputcontextplugin.so到Qt安装目…