前言

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. CentOS 7.3 操作系统 详解安装手册

    CentOS 7.3 操作系统 安装手册 在安装ESPC前(绿盟WAF.IPS等外置日志中心),需要确保已经在计算机中正确安装CentOS 7.3 x86_64(内核版本为3.10.0-514.el7 ...

  2. 技本功|Hive优化之Spark执行引擎参数调优(二)

    Hive是大数据领域常用的组件之一,主要是大数据离线数仓的运算,关于Hive的性能调优在日常工作和面试中是经常涉及的的一个点,因此掌握一些Hive调优是必不可少的一项技能.影响Hive效率的主要有数据 ...

  3. Pulsar3.0新功能介绍

    在上一篇文章 Pulsar3.0 升级指北讲了关于升级 Pulsar 集群的关键步骤与灾难恢复,本次主要分享一些 Pulsar3.0 的新功能与可能带来的一些问题. 升级后所遇到的问题 先来个欲扬先抑 ...

  4. thymeleaf特殊字符输出转义

    thymeleaf特殊字符输出转义,字符串包括/@#¥%&*,正常来说他们输出会被转义掉.主要是使用了th:inline="javascript"标签,它会自动安全转义字符 ...

  5. Java播放MP3播放音频

    Java播放MP3播放音频 下面我演示用jdk自带包.框架等分别展示播放mp3.等music 一.使用javafx包 AudioClip 注意jdk11以上剥离了javafx public stati ...

  6. kylin&CDH理论基础

    Kylin&CDH理论基础 一.维度与度量 维度是观察数据的角度.比如电商的销售数据,可以从时间维度来观察,进一步细化时间和地区维度来观察. 度量是被聚合的统计值,也是聚合运算的结果.知道维度 ...

  7. C# 将Word转为PDF时,设置PDF文档保护

    本文以C#代码示例展示如何将Word转为PDF时,设置PDF文档保护,可设置PDF文档打开密码保护以及权限密码保护.附VB.NET代码,有需要可供参考. 程序环境: 1.Word测试文档:.docx ...

  8. 海量数据分析快准稳!GaussDB(for MySQL) HTAP只读分析特性详解

    摘要:除了拥有 ClickHouse 本身的极致性能外,GaussDB(for MySQL)的HTAP只读分析在 MaterilizeMySQL引擎的性能和稳定性等方面具有更优秀的表现,为提供更快更准 ...

  9. 字节跳动基于ClickHouse优化实践之“高可用”

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 相信大家都对大名鼎鼎的ClickHouse有一定的了解了,它强大的数据分析性能让人印象深刻.但在字节大量生产使用中 ...

  10. 火山引擎DataLeap的Catalog系统搜索实践(一):背景与功能需求

    火山引擎DataLeap的Data Catalog系统通过汇总和组织各种元数据,解决了数据生产者梳理数据.数据消费者找数和理解数的业务场景,其中搜索是Data Catalog的主要功能之一.本文详细介 ...