浅谈Nginx相关HTTP杂项模块(一)

2023-11-18

1️⃣ ngx_http_access_module

http_access_module包含了http的访问权限控制的一个模块,前面一节的limit_except指令里用过,还可以用在http, server, location等地方。
allow
在这里插入图片描述

  • 允许访问指定的网络或地址。如果unix:指定了特殊值(NGINX1.5.1),则允许访问所有UNIX域套接字。

deny
在这里插入图片描述

  • 拒绝访问指定的网络或地址。如果unix:指定了特殊值(NGINX 1.5.1),则拒绝所有UNIX域套接字的访问。
  • 示例:
location /admin {
    deny  192.168.1.1;
    allow 192.168.1.0/24;
    allow 10.1.1.0/16;
    allow 2001:0db8::/32;
    deny  all;
}
  • 依次检查规则,直到找到第一个匹配项。在此示例中,仅允许对IPv4网络 10.1.1.0/16(192.168.1.0/24 不包括地址192.168.1.1)和IPv6网络进行访问2001:0db8::/32

2️⃣ ngx_http_auth_basic_module

实现基于用户的访问控制,使用basic机制进行用户认证

  • auth_basic
    在这里插入图片描述
  • 使用“ HTTP基本身份验证”协议启用用户名和密码的验证。
  • 指定的参数用作realm。参数值可以包含变量(1.3.10,1.2.7)。
  • 该特殊值off允许取消auth_basic从先前配置级别继承的指令的效果。
  • auth_basic_user_file
    在这里插入图片描述
  • htpasswd命令(http-tools提供)实现加密文本文件
  • 示例:实现使用basic机制进行用户认证
apt -y install apache2-utlis  # ubuntu的htpasswd工具包
htpasswd -c -m /apps/nginx/conf.d/.auth_passwd user1   # 生成密码文件

# 修改配置文件
server {
  listen 80;
  server_name www.studylinux.com;
  location / {
    root /data/nginx/pc;
  location /admin/{
    root /data/nginx/;
    auth_basic "admin auth";
    auth_basic_user_file /apps/nginx/conf.d/.auth_passwd;
  }
  }
  error_page 404 =200 /404.html;
  location /404.html {
     root /data/nginx/error_page;
  }
}

echo "auth passwd" > /data/nginx/admin/index.html
nginx -t
nginx -s reload

在这里插入图片描述

3️⃣ ngx_http_stub_status_module

用于输出nginx的基本状态信息

  • stub_status
    在这里插入图片描述
  • 示例:
location =/basic_status {
    stub_status;
    allow 172.16.0.0/16;
    deny all;
}
  • 输出结果示例:
Active connections: 291 
server accepts handled requests
 16630948 16630948 31070465 
Reading: 6 Writing: 179 Waiting: 106 
  • 输出信息
    Active connections: 活动状态的连接数
    accepts:已经接受的客户端请求的总数
    handled:已经处理完成的客户端请求的总数
    requests:客户端发来的总的请求数
    Reading:正在读取客户端请求报文首部的连接的连接数
    Writing:正在向客户端发送响应报文过程中的连接数
    Waiting:正在等待客户端发出请求的空闲连接数

4️⃣ ngx_http_log_module

指定http访问日志格式和路径的模块

▶ 1.log_format:定义日志格式

在这里插入图片描述

  • string可以使用nginx核心模块及其它模块内嵌的变量。
  • Nginx内嵌变量:http://nginx.org/en/docs/varindex.html
  • nginx主配置文件里面有示例
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
  • 参数分析
    $remote_addr:指的就是客户端地址。
    $remote_user:Basic认证时候的用户名
    [$time_local]: 中括号括起来的本地时间(通用的日志格式的那种)
    $request:request URI
    $status:响应码
    body_bytes_sent:返回的body大小
    http_referer:跳转链接,从哪个网页跳转过来,可以用来看外链。
    http_user_agent:用户浏览器类型
    http_x_forwarded_for:简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP,在通过了HTTP 代理或者负载均衡服务器时会添加该项。
  • httpd的日志格式默认使用的combined模式,combined格式的默认定义为:
  • LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
  • 这里写了各种参数代表的意义:http://blog.csdn.net/hytfly/article/details/11209909
  • 官方详细参数解析:http://httpd.apache.org/docs/2.4/mod/mod_log_config.html#formats

▶ 2.accsess_log:定义日志路径 格式,日志模式

在这里插入图片描述

  • 可以在不同的区域自定义访问日志文件路径和文件名,还有日志格式,以及相关的缓冲的配置

▶ 3.自定义json格式日志

   log_format access_json '{"@timestamp":"$time_iso8601",'      
      '"host":"$server_addr",'  '"clientip":"$remote_addr",'  
      '"size":$body_bytes_sent,' '"responsetime":$request_time,' 
      '"upstreamtime":"$upstream_response_time",'
       '"upstreamhost":"$upstream_addr",'        
       '"http_host":"$host",'        
       '"uri":"$uri",'        
       '"domain":"$host",'        
       '"xff":"$http_x_forwarded_for",'        
       '"referer":"$http_referer",'        
       '"tcp_xff":"$proxy_protocol_addr",'        
       '"http_user_agent":"$http_user_agent",'        
       '"status":"$status"}';     
   access_log  /apps/nginx/logs/access_json.log  access_json; 

open_log_file_cache
在这里插入图片描述

  • 缓存各日志文件相关的元数据信息。
    max:缓存的最大文件描述符数量
    min_uses:在inactive指定的时长内访问大于等于此值方 可被当作活动项
    inactive:非活动时长
    valid:验正缓存中各缓存项是否为活动项的时间间隔

5️⃣ ngx_http_gzip_module

gzip 是否开启压缩功能
在这里插入图片描述
gzip_comp_level: gzip压缩级别1-9,平时用3-5
在这里插入图片描述
gzip disable: 禁止IE6之类的浏览器压缩
在这里插入图片描述
gzip_min_length: gzip压缩的最⼩⽂件,⼩于设置值的⽂件将不会压缩
在这里插入图片描述
gzip_buffers: 支持实现压缩功能时为其配置的缓冲区数量及每个缓存区的大小。
在这里插入图片描述
gzip_proxied:nginx作为代理服务器接收到从被代理服务器发送的响应报文后,在何种条件下启用压缩功能的。
在这里插入图片描述

  • off:对代理的请求不启用。
  • no-cache, no-storeprivate:表示从被代理服务器收到的响应报文首部的Cache-Control的值为此三者中任何一个,则启用压缩功能。

gzip_types mime-type: 压缩过滤器,仅对此处设定的MIME类型的内容启用压缩功能。
在这里插入图片描述
gzip_vary on | off: 如果启⽤压缩,是否在响应报⽂⾸部插⼊Vary: Accept-Encoding

  • 示例:开启压缩,响应报文首部插入“Vary: Accept-Encoding”,支持压缩html, js, css, txt文件
server {
  listen 80;
  server_name www.studylinux.com;
  location / {
    root /data/nginx/pc;
  gzip on;
  gzip_comp_level 3;
  gzip_min_length 32;
  gzip_types text/css application/javascript text/plain;
  gzip_vary on;
  
}

nginx -t 
nginx -s reload
# 制作txt文件要大于配置文件要求 否则压缩不启用 上述配置32K
# 开始测试
root@ubuntu1804-31:~# curl -I  www.studylinux.com/ceshi.txt
HTTP/1.1 200 OK
Server: nginx
Date: Mon, 06 Jan 2020 14:04:13 GMT
Content-Type: text/plain
Last-Modified: Mon, 06 Jan 2020 14:03:54 GMT
Connection: keep-alive
Vary: Accept-Encoding             # 响应报文
ETag: W/"5e133e4a-2504ba"
Content-Encoding: gzip            # 启用压缩传输
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

浅谈Nginx相关HTTP杂项模块(一) 的相关文章

随机推荐

  • 雷军的代码像诗一样优雅(94年写的),网友直呼:跪着读完!

    点击上方 码农突围 马上关注 这里是码农充电第一站 回复 666 获取一份专属大礼包 真爱 请设置 星标 或点个 在看 程序员晒贴 94年雷军写的代码水平如何 网友直呼 跪着读完 雷军曾自夸自己写的代码像诗一样优雅 网友感觉这雷军写的94年
  • 接口自动化测试框架-httprunner V2.x中文使用手册-快速上手

    本文将通过一个简单的示例来展示 HttpRunner 的核心功能使用方法 案例介绍 该案例作为被测服务 主要有两类接口 权限校验 获取 token 支持 CRUD 操作的 RESTful APIs 所有接口的请求头域中都必须包含有效的 to
  • 2023年最佳JavaScript框架:React、Vue、Angular和Node.js的比较

    文章目录 React 构建用户界面的首选 Vue 简单优雅的前端框架 Angular Google支持的全面框架 Node js 服务器端的JavaScript运行环境 比较不同框架的优势与劣势 React Vue Angular Node
  • 思考外语学习的底层逻辑(以英语、法语为例)

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 目录 前言 一 英语 1 学习历程 2 英语学习的心得 3 理论检验 持续更新 二 法语 1 学习历程 2 读入数据 总结 前言 提示 这里谈谈自己为什么要写这篇博客 自己从
  • 洛谷 P1008 [NOIP1998 普及组] 三连击

    题目链接 https www luogu com cn problem P1008 include
  • 出现错误代码0xc000007b,应用程序无法正常启动的解决方法

    很多用户运行安装软件及运行软件时 或是在玩大型游戏时 会出现电脑报错 0xc000007b应用程序无法正常启动 导致错误代码0xc000007b的原因有很多 驱动人生整理了常见的原因 也为大家提供相应的解决方法 错误代码0xc000007b
  • 8.压缩打包类+文件查找类命令

    个人简介 作者简介 大家好 我是W chuanqi 一个编程爱好者 个人主页 W chaunqi 支持我 点赞 收藏 留言 愿你我共勉 若身在泥潭 心也在泥潭 则满眼望去均是泥潭 若身在泥潭 而心系鲲鹏 则能见九万里天地 文章目录 压缩解压
  • 思维导图系列——计算机网络

    思维导图系列 操作系统 思维导图为博主期末复习亲自整理而成的 知识点覆盖全 可直接看思维导图复习 包含注解 图示等 觉得对你有帮助 不妨一键三连哦 链接见文末 参考书目 计算机网络 第7版 谢希仁 系列文章直达 思维导图系列 计算机网络 添
  • 墨者靶场—SQL手工注入漏洞测试(MySQL数据库)

    0x00 前言 学SQL注入也有一段时间了 找了一个在线靶场 这个题目基本上学会最基本的注入原理和方法都能拿下 废话就不多说了 直接来演示吧 菜鸟渗透 大佬勿喷 0x01 过程 首先我们先稍微看一下题目 通过题目我们可以看出靶场环境是Ngi
  • python水仙花数的编程讲解_Python语言生成水仙花数代码示例

    水仙花数是指一个 n 位数 n 3 它的每个位上的数字的 n 次幂之和等于它本身 本文将通过Python代码实现打印水仙花数 具体如下 水仙花数 narcissistic number 水仙花数是指一个 n 位数 n 3 它的每个位上的数字
  • 如何彻底卸载Anaconda?

    文章目录 0 前言 1 解决方案 1 1方案1 1 2方案2 2 参考文档 0 前言 本机Win10 最好的参考文档是官方文档Uninstalling Anaconda 除此以外 再辅助以其他文档 就能达到如标题所示的目的 整个删除过程不难
  • Unity手游资源修改流程

    最近接到一个Android手游汉化需求 研究了一下 特此记录 开发环境 AssetStudioGUI 该软件可解析 定位压缩后的Unity 资源 下载 https github com Perfare AssetStudio AssetBu
  • 攻防世界-Web新手区- simple_php

    攻防世界 Web新手区 simple php 题目链接 https adworld xctf org cn challenges details hash 97ccaf1c b0ba 4152 88c1 10da78135303 2 tas
  • 通过wiki进行企业内部的知识共享

    其实企业内部的知识共享是一个很复杂的问题 每个人都有自己的经验和Key Knowledge 每次开发也能积累到很多有用的开发经验或者教训 可是怎样才能进行有效的知识共享呢 一个完善的知识共享系统应该具有以下几种特性 易于使用的界面 好的知识
  • 突如其来的C#重新学习(2)

    突如其来的C 重新学习 2 关于Main入口点的问题 Main在C 中不能单独声明 所以必须声明在同一个类中 而且必须声明静态方法 返回可以是void或者int 正常执行应当返回0 对于一个命名空间之内有很多的类的情况下 就可以手动选择从哪
  • 前端网页设置视频背景

    视频设置自动播放 循环播放 静音 一定要设置静音不设置静音的话不会自动播放 video元素设置width 100 height auto 如果height设置100 的话 定位之后会看不到
  • pycharm常用快捷键及快捷键自定义修改

    一 常用快捷键 编辑类 Ctrl D 复制选定的区域或行 Ctrl Y 删除选定的行 Ctrl Alt L 代码格式化 Ctrl Alt O 优化导入 去掉用不到的包导入 Ctrl 鼠标 简介 进入代码定义 Ctrl 行注释 取消注释 Ct
  • 关闭WIN10的wsappx进程服务

    关闭原因 打开电脑登录系统后 发现wsappx进程服务占用CPU极高 并且一直没有降低 如下图所示 解决办法 将以下注册表的值由3修改为4重启系统即可 计算机 HKEY LOCAL MACHINE SYSTEM CurrentControl
  • 手把手帮助你通过Vue+Springboot+MybatisPlus实现一个简单的登录注册页面,0基础

    创建前端vue项目 首先通过脚手架创建vue文件夹 前提 安装好node js软件 安装好后 通过node V 查看版本号 npm V查看npm版本 通过命令安装脚手架 npm install g vue cli g代表全局安装 s代表本地
  • 浅谈Nginx相关HTTP杂项模块(一)

    浅谈Nginx相关HTTP杂项模块 一 1 ngx http access module 2 ngx http auth basic module 3 ngx http stub status module 4 ngx http log m