详解Nginx如何根据swagger关键字屏蔽页面

 更新时间:2023年08月01日 09:47:26   作者:ACGkaka_  
这篇文章主要为大家详细介绍了Nginx 如何根据swagger关键字屏蔽页面的实现方案,文中有详细的解决方案,对我们的学习或工作有一定的帮助,需要的朋友可以参考下

一、知识回顾

1.什么是 location

Nginx 中通过根据 location 块的规则来将匹配到的 URL 请求进行一系列操作,最常见的就是进行代理。Nginx 中一个 Server 可以有多个 location 配置,当请求在与多个 location 匹配时,会根据一定的 location 匹配规则和优先级来确定具体将请求分发到哪个 location。

2.location 语法

# |指令|  |前缀|   |匹配的网站网址|  |匹配URI之后要执行的配置段|
location [=|^~|~|~*] /uri/ { ... }

3.location 的匹配规则

匹配规则说明
没有前缀普通匹配(遵循最大前缀匹配规则)。
=精确(严格)匹配。
~区分大小写的正则匹配。
~*不区分大小写的正则匹配。
^~匹配 URI 以某个常规字符串开头,^ 为正则表达式中的开头。
!~区分大小写不匹配的正则。
!~*不区分大小写不匹配的正则。
/通用匹配,任何请求都会匹配到。

由此我们可以根据是否按照正则匹配将 location 的匹配规则划分为两类:

  • 普通location: 包括 没有前缀=^~@ 四种。其中 @ 时用作服务内部的一种转发行为,很少用。
  • 正则location: 包括 ~~*!~!~* 四种。

4.优先级排序

具体的匹配顺序生效规则如下:

  • 普通 location 与正则 location 之间的匹配:选择出 “普通 location” 的最大前缀匹配结果后,还需要继续搜索正则 location。如果继续搜索的 “正则 location” 也有匹配上的,那么 “正则 location” 覆盖 “普通 location” 的最大前缀匹配。
  • 普通 location 之间:最大前缀匹配。
  • 正则 location 之间:按照正则 location 在配置文件中的物理顺序(编辑顺序)匹配,并且只要匹配到一条正则 location,就不再考虑后面的。
  • 以上 “普通 location” 指的是 没有前缀 和 @,= 和 ^~ 在匹配到结果后就不再需要继续匹配 “正则 location” 了(^ 表示 “非”,~ 表示 “正则”,字符意思是:不要继续匹配正则)。
    • = 和 ^~ 共同点:都可以阻止继续匹配 “正则 location”。
    • = 和 ^~ 不同点:^~ 依然遵守 “最大前缀” 匹配规则,然而 = 不是 “最大前缀”,而是必须是严格匹配(exact match)。

所有类型location存在时,优先级排序为:

=匹配 > ^~匹配(不是用正则,最大前缀匹配) > 正则匹配 > 没有前缀(最大前缀匹配) > 默认(/)

location / {} 和 location = / {} 的区别:

  • location / {} 遵守普通 location 的最大前缀匹配,由于任何 URI 都必然以 / 根开头,所以对于一个 URI,如果有更 specific 的匹配,那自然是选这个更 specific 的,如果没有,/ 一定能为这个 URI 点背(至少能匹配到 /)。也就是说,location / {} 有默认配置的意思,其他更 specific 的配置能 orverwrite 这个默认配置(这也是为什么我们总能看到 location / {} 这个配置的原因)。
  • location = / {} 遵守的是 “严格精确匹配 exact match”,也就是只能匹配 http://host:port/ 请求,同时会禁止继续搜索正则 location。因此如果我们只想对 “GET /” 请求配置作用指令,那么我们可以选 location = / {},这样能减少正则 location 的搜索,因此效率比 location / {} 高(注:前提是我们的目的仅仅只想对 “GET /” 起作用)。

二、如何根据关键字筛选请求

1.实现方案

可以利用以下四种匹配规则实现:

匹配规则说明
~区分大小写的正则匹配。
~*不区分大小写的正则匹配。
!~区分大小写不匹配的正则。
!~*不区分大小写不匹配的正则。

例如,我想根据 swagger 关键字进行筛选,将带有 swagger 的请求全部拦截,我们可以这么实现:

location ~* swagger {
    return 404;
}

2.测试结果

访问地址:http://localhost:8081/swagger-ui.html

整理完毕!

参考地址:

1.Nginx之location匹配规则,https://www.cnblogs.com/gaoyanbing/p/16915446.html

到此这篇关于详解Nginx如何根据swagger关键字屏蔽页面的文章就介绍到这了,更多相关Nginx swagger屏蔽页面内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Nginx为静态资源配置缓存时间的操作步骤

    Nginx为静态资源配置缓存时间的操作步骤

    最近在优化网站性能时,发现很多静态资源(比如图片、CSS 文件等)每次都会从服务器重新加载,这不仅浪费了带宽,还增加了 服务器的负载,为了解决这个问题,我研究了一下如何在 Nginx 中为静态资源配置缓存时间,下面是我的配置过程,需要的朋友可以参考下
    2025-02-02
  • Nginx 4层转发TCP流量实现负载代理

    Nginx 4层转发TCP流量实现负载代理

    本文介绍了在AlmaLinux上安装和配置Nginx的Stream模块,用于处理TCP和UDP流量,特别是将用户的请求转发到后端服务器,下面就来详细的介绍一下,感兴趣的可以了解一下
    2026-01-01
  • 关于Nginx开启gzip的配置的问题

    关于Nginx开启gzip的配置的问题

    这篇文章主要介绍了关于Nginx开启gzip的配置的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • 一文搞懂Nginx限流(简单实现)

    一文搞懂Nginx限流(简单实现)

    这篇文章主要介绍了一文搞懂Nginx限流(简单实现),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-05-05
  • Nginx接收Http协议请求转发使用Https协议的问题

    Nginx接收Http协议请求转发使用Https协议的问题

    这篇文章主要介绍了Nginx接收Http协议请求转发使用Https协议,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06
  • windows系统下安装Nginx及简单使用过程

    windows系统下安装Nginx及简单使用过程

    Nginx是一个很强大的高性能Web和反向代理服务,也是一种轻量级的Web服务器,可以作为独立的服务器部署网站,应用非常广泛,特别是现在前后端分离的情况下,这篇文章主要介绍了windows系统下安装Nginx以及简单使用,需要的朋友可以参考下
    2024-04-04
  • OpenResty是什么,OpenResty和Nginx的区别?

    OpenResty是什么,OpenResty和Nginx的区别?

    Nginx作为一款轻量级、高性能的Web服务器,传统局限性也很明显:静态配置、逻辑扩展依赖C模块开发,使得它在需要动态业务逻辑的场景中显得捉襟见肘,<BR>而OpenResty的出现,打破了这一僵局,它通过将Lua脚本深度集成到Nginx中,将“静态代理服务器”升级为“动态应用平台”
    2025-04-04
  • Nginx转发socket端口配置详解

    Nginx转发socket端口配置详解

    这篇文章主要介绍了Nginx转发socket端口配置详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-06-06
  • Nginx获取IP地址变量的几种方式

    Nginx获取IP地址变量的几种方式

    Nginx提供了多种方式来获取和使用IP地址变量,包括使用$remote_addr、$http_x_forwarded_for、real_ip模块以及map指令,下面就来介绍一下获取IP地址变量的几种方式
    2025-11-11
  • nginx实现数据库端口转发

    nginx实现数据库端口转发

    本文主要介绍了nginx实现数据库端口转发,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03

最新评论