前言

nginx配置文件中,可以使用if语句,但是对于else语句其实是不支持的,并且and条件和or条件也是不支持的

实现
  1. else条件的写法

    新建一个开关变量flag,初始值为0,如果为1说明进入了if

    set $flag 0;
    if () {
    // 这里是if的代码
    // -----
    <span class="token comment">// 将控制变量置为1,代表已经进入了if</span>
    set <span class="token variable">$flag</span> <span class="token number">1</span><span class="token punctuation">;</span>

    }

    if ($flag != 1) {

    // 进入这里说明没有进入if中

    // 这里是else的代码

    }

  2. or条件的写法

    新建一个条件变量flag,初始值为0,如果为1说明起码有一个条件成立

    set $flag 0;
    
    if () {

    set \(flag</span> <span class="token number">1</span><span class="token punctuation">;</span>
    <span class="token punctuation">}</span>
    <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span>
    set <span class="token variable">\)flag 1;

    }

    if () {

    set $flag 1;

    } if ($flag = 1) {

    // 这里写or条件的代码

    }
  3. and条件的写法

    新建一个条件变量flag,初始值为空字符串,如果全部是1说明所有条件都成立

    set $flag "";
    
    if () {

    set \(flag</span> <span class="token double-quoted-string string">"\){flag}1";

    }

    if () {

    set \(flag</span> <span class="token double-quoted-string string">"\){flag}1";

    }

    if () {

    set \(flag</span> <span class="token double-quoted-string string">"\){flag}1";

    } if ($flag ~* "111") {

    // 这里写and条件的代码

    }
具体案例

跨域请求中配置不同的域名

  # 声明一个控制变量,做到类似else效果
set $switchVarible 0; if (\(http_origin</span> <span class="token operator">~</span><span class="token operator">*</span> <span class="token double-quoted-string string">"^https://www.aliwork.com\)") {

set \(cors_origin</span> <span class="token variable">\)http_origin;

set \(switchVarible</span> <span class="token number">1</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token variable">\)http_origin ~ "^https://localohost:8000\("</span><span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span>
set <span class="token variable">\)cors_origin \(http_origin</span><span class="token punctuation">;</span>
set <span class="token variable">\)switchVarible 1;

}

if (\(switchVarible</span> <span class="token operator">!=</span> <span class="token number">1</span><span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span>
set <span class="token variable">\)cors_origin '
';

} add_header Access-Control-Allow-Origin $cors_origin;

add_header Access-Control-Allow-Credentials true;

[转帖]nginx配置文件中对于if条件语句的写法(附nginx跨域文件配置)的更多相关文章

  1. vb编程中的选择结构语句的写法

    1996年,Bohra和Jacopin提出了结构化算法的3中种基本结构:顺序结构.选择结构和循环结构 目前已经得到证明,无论多么复杂的程序,都是由上面的3种基本结构中的一种或者多种的组合构成 在此笔者 ...

  2. nginx反向代理跨域基本配置与常见误区

    最近公司前后端分离,前端独立提供页面和静态服务很自然的就想到了用nginx去做静态服务器.同时由于跨域了,就想利用nginx的反向代理去处理一下跨域,但是在解决问题的同时,发现网上有些方案的确是存在一 ...

  3. nginx配置文件中的location理解

    关于一些对location认识的误区 1. location 的匹配顺序是"先匹配正则,再匹配普通". 矫正: location 的匹配顺序其实是"先匹配普通,再匹配正则 ...

  4. nginx配置文件中的location详解

    location 语法:location [=|~|~*|^~] /uri/ { … } 默认:否 上下文:server 这个指令随URL不同而接受不同的结构.你可以配置使用常规字符串和正则表达式.如 ...

  5. 对于nginx配置文件中的fastcgi_param的配置错误

    在centos中搭建LNMP的时候,遇到了一个问题 在浏览器中访问.php文件的时候,nginx不能正常解析,页面返回404,后来百度了一下,发现了问题 在nginx的配置文件nginx.conf中的 ...

  6. nginx配置文件中location说明

    1 nginx配置文件 文件结构 ... #全局块 events { #events块 ...} http #http块 { ... #http全局块 server #server块 { ... #s ...

  7. 对于nginx配置文件中的fastcgi_param相关参数的理解

    今天在ubuntu中搭建LNMP的时候,遇到了一个问题 在浏览器中访问.php文件的时候,nginx不能正常解析,页面只是空白,后来百度了一下,发现了问题 在nginx的配置文件nginx.conf中 ...

  8. nginx配置文件说明(包含IP黑名单、代理反射、负载均衡的配置)

    先看下nginx配置文件整体结构 图片来源51cto 配置文件及注解: #运行用户 主模块指令,指定Nginx Worker进程运行用户以及用户组,默认由nobody账号运行 user nobody; ...

  9. shell脚本中的case条件语句介绍和使用案例

    #前言:这篇我们接着写shell的另外一个条件语句case,上篇讲解了if条件语句.case条件语句我们常用于实现系统服务启动脚本等场景,case条件语句也相当于if条件语句多分支结构,多个选择,ca ...

  10. shell脚本中的if条件语句介绍和使用案例

    #前言:在生产工作中if条件语句是最常使用的,如使用来判断服务状态,监控服务器的CPU,内存,磁盘等操作,所以我们需要熟悉和掌握if条件语句. #简介 if条件语句,简单来说就是:如果,那么.有if单 ...

随机推荐

  1. Python——第一章:占位——pass

    pass: 常用于代码占位 a = 10 if a > 100: pass 当设计代码时,有些条件或代码还没有想好要如何处理,先用pass做占位,后续可以回来继续写.如果不写pass则会报错,因 ...

  2. C语言基础之四舍五入

    要求:输入任意的2个小数:将这2个小数相加并显示结果:将结果按四舍五入方法转换成整数并显示. 0.0到0.4的数加上0.5不会进位,而0.5到0.9的数加上0.5会进位.所以可以依靠这个特点让计算后的 ...

  3. win10安装WSL

    一.什么是WSL? Windows Subsystem for Linux 简称 WSL,是一个在Windows 10上能够运行原生Linux二进制可执行文件(ELF格式)的兼容层. 二.如何安装WS ...

  4. 开发篇1:使用原生api和Langchain调用大模型

    对大模型的调用通常有以下几种方式:方式一.大模型厂商都会定义http风格的请求接口,在代码中可以直接发起http请求调用:方式二.在开发环境中使用大模型厂商提供的api:方式三.使用开发框架Langc ...

  5. antd ui的from使用问题

    select 的allowClear失效问题 select的value与allowClear同时使用会导致allowClear失效 解决方法 from包装一层,通过const [form] = For ...

  6. 个性化联邦学习算法框架发布,赋能AI药物研发

    摘要:近期,中科院上海药物所.上海科技大学联合华为云医疗智能体团队,在Science China Life Sciences 发表题为"Facing Small and Biased Dat ...

  7. 梳理数仓FI manager节点健康检查逻辑

    摘要:一篇记录FI Manager节点健康检查机制的博文. 本文分享自华为云社区<GaussDB(DWS) FI manager节点健康检查逻辑梳理>,作者:配音师 . 一.相关背景 1. ...

  8. AI Studio 基本操作

    https://aistudio.baidu.com/aistudio/projectdetail/6182202 项目启停 执行和调试 添加代码或文件 运行代码 %cd /home/aistudio ...

  9. SQL Server 事务执行、回滚

    MySQL 事务回滚.在执行删除.更新等操作时,防止误操作 生产环境更新数据时必用 begin tran --开启事务 begin--先在事务中 执行 UPDATE Sys_User SET Name ...

  10. ABAP RSA方式调用工行银企直联API

    目录 一.研究背景 二.   RSA简介 RSA是非对称加密的一种. 对称加密算法: 在加密和解密时使用的是同一个秘钥:如图所示: 非对称加密算法: 需要一对密钥来加密解密,这两个密钥是公开密钥(pu ...