当前位置: 首页 > 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
http://www.lryc.cn/news/311482.html

相关文章:

  • Python在信息安全领域中具有重要的作用
  • Linux 定时备份文件到另一台服务器
  • C++输入输出(I\O)
  • 基本设计模式
  • 双通道音频功率放大电路,外接元件少, 通道分离性好,3V 的低压下可正常使用——D2025
  • Linux 内核获取函数size
  • Python+neo4j构建豆瓣电影知识图谱
  • DolphinScheduler——介绍及架构设计
  • 【Python】约瑟夫环问题
  • Python成功解决AttributeError: ‘Series‘ object has no attribute ‘set_value‘
  • 基于springboot+vue的医院药品管理系统
  • Python爬虫——Urllib库-1
  • 瑞_Redis_短信登录(一)
  • 《剑指 Offer》专项突破版 - 面试题 70 : 排序数组中只出现一次的数字(C++ 实现)
  • Linux安全加固功能
  • 最新AI系统ChatGPT网站H5系统源码,支持Midjourney绘画
  • 【服务器数据恢复】昆腾存储中raid5磁盘阵列数据恢复案例
  • 企业微信变更主体怎么改?
  • 常用生理眼电信号整理合集 (EOG)
  • 【场景题】让你设计一个订单号生成服务,该怎么做?
  • 使用GraphView实现简单的绘图工具
  • javaWebssh教师荣誉库管理系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计
  • Android minigbm框架普法
  • 01、MongoDB -- 下载、安装、配置文件等配置 及 副本集配置
  • uniapp中导入css和scss的区别
  • RabbitMQ-TTL/死信队列/延迟队列高级特性
  • docker安装php7.4安装(swoole)
  • 身份证识别系统(安卓)
  • Python教程——最后一波来喽
  • 学生管理系统(python实现)