Nginx实现if多重判断配置方法示例

nginx的配置中不支持if条件的逻辑与/逻辑或运算 ,并且不支持if的嵌套语法,我们可以用变量的方式来实现:
首先是伪代码(即不被nginx支持),写在这里只是为了方便理解:

代码如下:

if ($remote_addr ~ "^(12.34|56.78)" && $http_user_agent ~* "spider") {
    return 403;
}

下面这是等效的,并真实可用的配置

代码如下:

set $flag 0;
if ($remote_addr ~ "^(12.34|56.78)") {
    set $flag "${flag}1";
}
if ($http_user_agent ~* "spider") {
    set $flag "${flag}2";
}
if ($flag = "012") {
    return 403;
}

(0)

相关推荐

  • Nginx中if语句的判断条件与多条件判断详解

    一.if语句中的判断条件(nginx)介绍 1.正则表达式匹配: ==:等值比较; ~:与指定正则表达式模式匹配时返回"真",判断匹配与否时区分字符大小写: ~*:与指定正则表达式模式匹配时返回"真",判断匹配与否时不区分字符大小写: !~:与指定正则表达式模式不匹配时返回"真",判断匹配与否时区分字符大小写: !~*:与指定正则表达式模式不匹配时返回"真",判断匹配与否时不区分字符大小写: 2.文件及目录匹配判断: -f,

  • nginx+rsync+inotify实现负载均衡配置方法

    实验环境 前端nginx:ip 192.168.6.242,对后端的wordpress网站做反向代理实现复杂均衡 后端nginx:ip 192.168.6.36,192.168.6.205都部署wordpress,并使用相同的数据库 1.在后端的两个wordpress上配置rsync+inotify,两服务器都开启rsync服务,并且通过inotify分别向对方同步数据 下面配置192.168.6.205这台服务器 vim /etc/rsyncd.conf uid = nginx gid = n

  • Nginx中IF语句实现数学比较功能

    nginx的if支持=.!= 逻辑比较, 但不支持if中 <.<.>=.<= 比较. 本示例使用了set-misc-nginx-module 复制代码 代码如下: location = /test/ {     default_type html;     set_random $a 0 9;      #$a 随机 从0-9取     if ( $a <= 4 ){         #$a 如果 < 4 这是错误的写法         echo 'a: $a is l

  • Nginx中IF、AND、OR语句用法实例

    在上一篇文章:<Nginx if语句加正则表达式实现字符串截断>中, 我们介绍过了使用if来进行截断字符串的用法, 这次我们来了解下if的逻辑用法: 什么是逻辑用法呢, 就程序中的and.or关系, 就叫做逻辑了. NGINX支持if的 and 与 or 或者 && 与 || 吗? 答案是No. 当你尝试这样配置, 重载nginx时, nginx会报出错误 复制代码 代码如下: location = /test/ {         default_type text/html

  • PHP、Nginx、Apache中禁止网页被iframe引用的方法

    可以使用php或nginx等添加X-Frame-Options header来控制frame权限X-Frame-Options有三个可选的值: DENY:浏览器拒绝当前页面加载任何Frame页面SAMEORIGIN:frame页面的地址只能为同源域名下的页面ALLOW-FROM:允许frame加载的页面地址 PHP代码: 复制代码 代码如下: header('X-Frame-Options:Deny'); Nginx配置: 复制代码 代码如下: add_header X-Frame-Option

  • Nginx if语句加正则表达式实现字符串截断

    在给大家讲述这个问题之前,先给大家看一段nginx配置. 我们用到了 set-misc-nginx-module 复制代码 代码如下: location /test/ {     default_type text/html;     set_md5 $hash "secret"$remote_addr;     echo $hash; } 这样输出来的内容,可能是下面这样的 复制代码 代码如下: 202cb962ac59075b964b07152d234b70 但如果我们要截取某几位

  • Nginx实现if多重判断配置方法示例

    nginx的配置中不支持if条件的逻辑与/逻辑或运算 ,并且不支持if的嵌套语法,我们可以用变量的方式来实现: 首先是伪代码(即不被nginx支持),写在这里只是为了方便理解: 复制代码 代码如下: if ($remote_addr ~ "^(12.34|56.78)" && $http_user_agent ~* "spider") {     return 403; } 下面这是等效的,并真实可用的配置 复制代码 代码如下: set $flag

  • Nginx防御DDOS攻击的配置方法教程

    前言 Nginx是一款轻量级的Web服务器,由俄罗斯的程序设计师Igor Sysoev所开发,最初供俄国大型的入口网站及搜寻引Rambler使用. 其特点是占有内存少,并发能力强,事实上Nginx的并发能力确实在同类型的网站服务器中表现较好. 防御DDOS是一个系统工程,攻击花样多,防御的成本高瓶颈多,防御起来即被动又无奈.DDOS的 特点是分布式,针对带宽和服务攻击,也就是四层流量攻击和七层应用攻击,相应的防御瓶颈四层在带宽,七层的多在架构的吞吐量.对于七层的应用攻击,我们还 是可以做一些配置

  • VSCode各语言运行环境配置方法示例详解

    系统环境变量的配置 如:将F:\mingw64\bin添加到系统环境变量Path中 VSCode软件语言json配置C语言 创建个.vscode文件夹,文件夹内创建以下两个文件 launch.json 文件配置 { "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch", "type": "cppdbg&

  • 实现nginx&php服务器配置的非主流配置方法

    实现php&nginx服务器配置的非主流配置方法 这种方法并非以前所流行的apache 加 php_module 的方式运行,我是采用nginx 作为web服务器,以fastcgi的方式运行php. linux下编译: nginx我还是习惯选择8.54的版本,它的编译依赖以下几个软件包,解压这些源码包,在configure中设置好这些源码的路径,nginx在编译的时候会自己将他们编译进去的: pcre: 主要用于rewrite等模块 zlib: 这个不用说了 openssl: 如果你还知道htt

  • 小程序微信支付功能配置方法示例详解【基于thinkPHP】

    本文实例讲述了小程序微信支付功能配置方法.分享给大家供大家参考,具体如下: ★ 背景 近期进行小程序的开发,毕竟是商城项目的开发,最后牵扯到的微信支付是必要的 个人开发过程中也是遇到各种问题,在此,我根据自己的实际操作,进行了代码的详细配置,以方便小程序新手的快速操作 -  使用语言:PHP             # PHP世界上最好的语言 HaHahahaaha -  使用框架:ThinkPHP 3.2    # 版本有点低而已,没啥大碍 -  测试工具:微信开发者工具    # 其实还挺好

  • Nginx 重定向时获取域名的方法示例

    TL;DR 如果你在处理 Nginx 重定向时要获取原请求的域名(比如 HTTP 到 HTTPS),请用 $host 而不是 $server_name . 问题和解决方案 今天碰到一个问题,服务器上一个子域名的请求重定向到另一个子域名上面去了.查了一段时间发现这个问题只有在 HTTP 到 HTTPS 跳转的时候才会发生.大概是这样: 从 HTTP 的 sub2 子域名跳转到 HTTPS 的 sub1 子域名 http://sub2.example.com/more_things -> https

  • Docker+keepalived+nginx实现主从热备的方法示例

    前言 为解决单点故障,我们需要配置主从热备方案,服务器数量有限,故使用Docker模拟安装配置. 本次配置默认已经安装了Docker. 配置环境:centos7 64位 docker版本:Docker version 17.12.1-ce, build 7390fc6 1,拉取centos7镜像 docker pull centos:7 2,创建容器 docker run -it -d --name centos1 -d centos:7 3,进入容器centos1 docker exec -i

  • toString.call()通用的判断数据类型方法示例

    大家都知道判断数据类型的方法有很多.我们常用的有typeof但是,这个方法有一定的局限性. typeof null // "object" typeof [8] // "object" typeof {} // "object" typeof function(){} // "function" typeof 2 //"number" typeof "" //"string&q

  • Nginx rewrite正则匹配重写的方法示例

    Nginx的rewrite功能支持正则匹配重写,即将URL地址临时或永久重新指向某个新的位置,类似于重定向.这个特性有利用当网站结构做出重大调整,如之前的网站mp3资源使用URL为www.site1.org/mp3进行访问,而现在服务器上mp3目录已经被使用music目录替换,那rewrite这个功能则能够轻松实现.其次如可以将site1.org强制调整到www.site1.org,反之亦可.这个指令位于ngx_http_rewrite_module模块.本文主要描述这个指令的用法并给出演示.

  • Nginx服务器高性能优化的配置方法小结

    通常来说,一个优化良好的 Nginx Linux 服务器可以达到 500,000 – 600,000 次/秒 的请求处理性能,然而我的 Nginx 服务器可以稳定地达到 904,000 次/秒 的处理性能,并且我以此高负载测试超过 12 小时,服务器工作稳定. 这里需要特别说明的是,本文中所有列出来的配置都是在我的测试环境验证的,而你需要根据你服务器的情况进行配置: 从 EPEL 源安装 Nginx: yum -y install nginx 备份配置文件,然后根据你的需要进行配置: cp /e

随机推荐