Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Nginx if指令支持多条件的逻辑判断吗?

Nginx if指令支持多条件的逻辑判断吗?

作者头像
用户1560186
发布于 2019-11-19 13:34:42
发布于 2019-11-19 13:34:42
4.7K00
代码可运行
举报
文章被收录于专栏:运维录运维录
运行总次数:0
代码可运行

不知不觉 nginx主题的文章写了60+篇,有最早的也有最近的,有些是记录安装配置,有些是记录问题解决方法,内容质量有深也有浅参差不齐,随着技术迭代有些文章已经过时了(例如Docker时代)不再符合当前的技术需求,而有些文章虽然久远但是仍有有意义(例如Nginx HA),所以有了梳理这些文章的想法,目标有两个吧,一是回顾下过去的文章巩固下知识点,二是去其糟粕留下精华将有价值的文章搬迁(搬砖)的微信公众号。


今天的这篇文章发布于2016年01月,是介绍如何在 nginx中如何借用set指令实现 if逻辑运算功能(如 True and True),这里借助set指令实现而不是直接在if表达式中加入 &&或者||运算符,是因为nginx的if指令不支持条件的"逻辑与"和"逻辑或"运算符,并且nginx不支持if嵌套形式条件判断。所以需要"曲线救国"来完成目标任务,此外文章除set指令外还涉return指令与if指令配合使用。


下面的示例要完成的目标有两个

1. 使用nginx $http_user_agent, $uri 变量 结合if 语句,完成多重条件判断。 2. 对应用场景,示例恶意post行为返回405状态码。 配置文件

cat /etc/nginx/conf.d/default.conf server { #... 其它配置项省略 # 设置变量为空字符串 set $black ''; # 条件1 if ($http_user_agent ~* "(compatible; MSIE 9.0; Windows NT 6.1)") { set $black "${black}1"; } # 条件2 if ($uri ~* "/tools/sendSms" ) { set $black "${black}1"; } # 条件3 "逻辑与"为变量叠加的形式,既条件为真设置值为1. if ($request_method = POST) { set $black "${black}1"; } # 条件3 "逻辑或",如任意一个条件为假设置值为0. if ($request_method != POST) { set $black "${black}0"; } # 叠加后的变量值,"逻辑与"111,"逻辑或"110. if ($black = "111") { return 405; } }


验证下结果

# 使用POST方法,服务器返回 405 状态。

curl -LI -X "POST" -A "Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1)" "http://localhost/tools/sendSms?type=mobilephone&mobilephone=1597XXXXX06" HTTP/1.1 405 Not Allowed Server: nginx 省略....

# 其它方法(GET/HEAD),服务器返回 200状态。

curl -LI -A "Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1)" "http://localhost/tools/sendSms?type=mobilephone&mobilephone=1597XXXXX06" HTTP/1.1 200 OK Server: nginx 省略....


指令使用方法 1. return 指令

语法:return code 默认值:none 使用字段:server, location, if 这个指令结束执行配置语句并为客户端返回状态代码,可以使用下列的值: 204,400,402-406,408,410, 411, 413, 416与500-504。 此外,非标准代码444将关闭连接并且不发送任何的头部。

2. set 指令

语法:set variable value 默认值:none 使用字段:server, location, if 指令设置一个变量并为其赋值,其值可以是文本,变量和它们的组合。 你可以使用set定义一个新的变量,但是不能使用set设置$http_xxx头部变量的值

3. if 指令

请参考这篇文章 <<Nginx Rewrite 重写URI>>


代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
本期搬砖就到这里下期再搬
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-08-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维录 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
一文了解视觉Transformer解析 !!
自2017年“注意力就是一切”的理念问世以来,Transformer模型便迅速再自然语言处理(NLP)领域展露头角,确立了其领先地位。到了2021年,“一张图片等于16x16个单词”的理念成功将Transformer模型引入计算机视觉任务中。自此以后,众多基于Transformer的架构纷纷涌现,应用于计算机视觉领域。
JOYCE_Leo16
2025/02/02
3361
一文了解视觉Transformer解析 !!
preprint版本 | 何凯明大神新作MAE | CVPR2022最佳论文候选
本文证明了蒙面自动编码器(MAE)是一种可扩展的计算机视觉自监督学习器。我们的MAE方法很简单:我们屏蔽输入图像的随机补丁并重建丢失的像素。
机器学习炼丹术
2021/12/06
1.3K0
preprint版本 | 何凯明大神新作MAE | CVPR2022最佳论文候选
【图像分类】Vision Transformer理论解读+实践测试
Vision Transformer是2021年谷歌在ICLR上提出的算法,算法原理并不复杂,但是其价值是开创性的。它首次将NLP领域火热的Transformer模型架构移植到了CV领域,打破了这两个领域壁垒,并取得不错的成效。
zstar
2022/09/20
2.9K0
【图像分类】Vision Transformer理论解读+实践测试
解析 Token to Token Vision Transformer
Vision Transformer!的提出让我们看到了Transformer模型在图像方向的潜力,但其有一些缺点,如需要超大型数据集(JFT)预训练,才能达到现在CNN的精度。本文分析了ViT的一些不合理之处:
BBuf
2021/03/11
7.6K0
深度学习应用篇-计算机视觉-图像分类3:ResNeXt、Res2Net、Swin Transformer、Vision Transformer等模型结构、实现、
相较于VGG的19层和GoogLeNet的22层,ResNet可以提供18、34、50、101、152甚至更多层的网络,同时获得更好的精度。但是为什么要使用更深层次的网络呢?同时,如果只是网络层数的堆叠,那么为什么前人没有获得ResNet一样的成功呢?
汀丶人工智能
2023/06/08
1.8K0
深度学习应用篇-计算机视觉-图像分类3:ResNeXt、Res2Net、Swin Transformer、Vision Transformer等模型结构、实现、
金字塔ViT | 华为提出使用金字塔结构改进Transformer,涨点明显(Pytorch逐行解读)
新的“PyramidTNT”通过建立层次表示,显著地改进了原来的TNT。PyramidTNT相较于之前最先进的Vision Transformer具有更好的性能,如Swin-Transformer。
集智书童公众号
2022/02/10
1K0
金字塔ViT | 华为提出使用金字塔结构改进Transformer,涨点明显(Pytorch逐行解读)
可视化VIT中的注意力
来源:DeepHub IMBA 本文约4000字,建议阅读8分钟 本文为你介绍ViT模型。 2022年, Vision Transformer (ViT)成为卷积神经网络(cnn)的有力竞争对手,
数据派THU
2023/04/18
1.1K0
可视化VIT中的注意力
Vision Transformer(ViT)
Transformer[1]是Google在2017年提出的一种Seq2Seq结构的语言模型,在Transformer中首次使用Self-Atttention机制完全代替了基于RNN的模型结构,使得模型可以并行化训练,同时解决了在基于RNN模型中出现了长距离依赖问题,因为在Self-Attention中能够对全局的信息建模。
felixzhao
2023/02/26
1.3K0
图像恢复SwinIR: Image Restoration Using Swin Transformer
在图像超分辨率、图像去噪、压缩等图像修复(Image restoration)任务中,卷积神经网络目前仍然是主流。但是卷积神经网络有以下两个缺点:
JOYCE_Leo16
2024/03/19
1.2K0
图像恢复SwinIR: Image Restoration Using Swin Transformer
CvT: 如何将卷积的优势融入Transformer
与之前BoTNet不同,CvT虽然题目中有卷积的字样,但是实际总体来说依然是以Transformer Block为主的,在Token的处理方面引入了卷积,从而为模型带来的局部性。最终CvT最高拿下了87.7%的Top1准确率。
BBuf
2022/01/27
9340
CvT: 如何将卷积的优势融入Transformer
VIT Vision Transformer | 先从PyTorch代码了解
【前言】:看代码的时候,也许会不理解VIT中各种组件的含义,但是这个文章的目的是了解其实现。在之后看论文的时候,可以做到心中有数,而不是一片茫然。
机器学习炼丹术
2021/03/04
2.2K0
3W字长文带你轻松入门视觉Transformer
Transformer整个网络结构完全由Attention机制组成,其出色的性能在多个任务上都取得了非常好的效果。本文从Transformer的结构出发,结合视觉中的成果进行了分析,能够帮助初学者们快速入门。
石晓文
2020/12/08
1.1K0
3W字长文带你轻松入门视觉Transformer
【YOLOv8】YOLOv8改进系列(8)----替换主干网络之Swin Transformer
论文介绍了一种新的视觉Transformer模型——Swin Transformer,它旨在成为计算机视觉领域的通用骨干网络。Swin Transformer通过其独特的层次化结构和移位窗口(Shifted Windows)机制,解决了传统Transformer在视觉任务中的计算复杂度问题,并在图像分类、目标检测和语义分割等多个任务中取得了优异的性能。
HABuo
2025/03/19
2260
【YOLOv8】YOLOv8改进系列(8)----替换主干网络之Swin Transformer
MoA-Transformer | Swin-Transformer应该如何更好地引入全局信息?
基于Transformer的体系结构在自然语言处理(NLP)领域取得了巨大的成功。受Transformer在语言领域的巨大成功的启发,Vision Transformer被提出,并在ImageNet数据集上取得了优秀的性能。Vision Transformer就像NLP中的word token一样,将图像分割成patches并输入Transformer之中,并通过Transformer的几个multi-head self-attention层来建立远程依赖关系。
集智书童公众号
2022/02/11
9590
MoA-Transformer | Swin-Transformer应该如何更好地引入全局信息?
真香!Vision Transformer 快速实现 Mnist 识别
引言:基于深度学习的方法在计算机视觉领域中最典型的应用就是卷积神经网络CNN。CNN中的数据表示方式是分层的,高层特征表示依赖于底层特征,由浅入深抽象地提取高级特征。CNN的核心是卷积核,具有平移不变性和局部敏感性等特点,可以捕捉局部的空间信息。
AI科技大本营
2022/04/05
1.5K0
真香!Vision Transformer 快速实现 Mnist 识别
FAST-VQA(论文复现)
现实世界视频分辨率的提高对于深度视频质量评估(VQA)在效率与准确性之间提出了一个难题。一方面,保持原始分辨率将导致不可接受的计算成本。另一方面,现有的实践方法,如图像缩放和裁剪,会因为细节和内容的丢失而改变原始视频的质量,因此对质量评估是有害的。通过对人类视觉系统中的时空冗余以及视觉编码理论的研究,我们观察到,一个邻域周围的质量信息通常是相似的,这促使我们研究一种有效的、对质量敏感的邻域表征方案用于VQA。在这项工作中,我们提出了一种统一的方案,即时空网格小立方体采样(St-GMS),以获得一种新型样本,我们称之为片段。首先将全分辨率视频按照预设的时空网格划分为小型立方体,然后对齐时间上的质量代表进行采样,以组成用于VQA的片段。此外,我们设计了一个专门为片段量身定制的网络架构,即片段注意力网络(FANet)。利用片段和FANet,所提出的效率端到端的FAST-VQA和FasterVQA在所有VQA基准测试上的性能显著优于现有方法,同时仅需要1/1612的FLOPs,相较于当前最先进技术大幅降低。
Srlua
2024/11/30
1530
FAST-VQA(论文复现)
搞懂 Vision Transformer 原理和代码,看这篇技术综述就够了(二)
本文为详细解读Vision Transformer的第二篇,主要包括三个方向的分类:可变形的Transformer ,用于分类任务的Transformer ,用于底层视觉任务的Transformer,分别对应了三篇相关论文。附有超详细的代码解读。 >>加入极市CV技术交流群,走在计算机视觉的最前沿
godweiyang
2021/04/08
3.4K0
搞懂 Vision Transformer 原理和代码,看这篇技术综述就够了(二)
CNN、Transformer、MLP架构的经验性分析
ViT的兴起挑战了CNN的地位,随之而来的是MLP系列方法。三种架构各有特点,为了公平地比较几种架构,本文提出了统一化的框架SPACH来对比,得到了具有一定insight的结论。论文来自微软的A Battle of Network Structures: An Empirical Study of CNN, Transformer, and MLP
BBuf
2021/12/27
1.1K0
CNN、Transformer、MLP架构的经验性分析
LLM入门5 | SAM代码从入门到出门 | MetaAI
非常好加载,基本上pytorch和torchvision版本不太落后就可以加载。里面的model_type需要和模型参数对应上,"vit_h"或者"vit_l"或者"vit_b",即便加载最大的2.4G的vit_h模型,也只需要占用8G的显卡。算是非常小的模型了。这里SAM测试的效果,很多情况下效果并不太好,是一个foundation model,我觉得主要原因是模型参数比较少。导致他不能很好的解决所有的问题。正确用法是对小领域最微调。
机器学习炼丹术
2023/09/02
1.2K0
LLM入门5 | SAM代码从入门到出门 | MetaAI
【论文复现】transformer
Transformer模型,这一革命性的神经网络架构,由谷歌团队于2017年率先在机器翻译领域推出。针对传统模型在处理长距离文本依赖时的局限性和并行化困难,Transformer引入了一种全新的设计理念——自注意力机制(Self-Attention)。这一机制允许模型在处理每个输入位置时,都能灵活关联序列中的其他部分,极大地增强了模型捕捉长距离依赖的能力。此外,Transformer还融合了残差连接(Residual Connections)与层归一化(Layer Normalization)等优化策略,不仅加速了训练进程,还显著提升了模型的性能表现。
Eternity._
2024/11/26
2160
【论文复现】transformer
推荐阅读
相关推荐
一文了解视觉Transformer解析 !!
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验