[转帖]nginx配置文件中对于if条件语句的写法(附nginx跨域文件配置)
前言
在nginx配置文件中,可以使用if
语句,但是对于else
语句其实是不支持的,并且and
条件和or
条件也是不支持的
实现
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的代码
}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条件的代码
}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跨域文件配置)的更多相关文章
- vb编程中的选择结构语句的写法
1996年,Bohra和Jacopin提出了结构化算法的3中种基本结构:顺序结构.选择结构和循环结构 目前已经得到证明,无论多么复杂的程序,都是由上面的3种基本结构中的一种或者多种的组合构成 在此笔者 ...
- nginx反向代理跨域基本配置与常见误区
最近公司前后端分离,前端独立提供页面和静态服务很自然的就想到了用nginx去做静态服务器.同时由于跨域了,就想利用nginx的反向代理去处理一下跨域,但是在解决问题的同时,发现网上有些方案的确是存在一 ...
- nginx配置文件中的location理解
关于一些对location认识的误区 1. location 的匹配顺序是"先匹配正则,再匹配普通". 矫正: location 的匹配顺序其实是"先匹配普通,再匹配正则 ...
- nginx配置文件中的location详解
location 语法:location [=|~|~*|^~] /uri/ { … } 默认:否 上下文:server 这个指令随URL不同而接受不同的结构.你可以配置使用常规字符串和正则表达式.如 ...
- 对于nginx配置文件中的fastcgi_param的配置错误
在centos中搭建LNMP的时候,遇到了一个问题 在浏览器中访问.php文件的时候,nginx不能正常解析,页面返回404,后来百度了一下,发现了问题 在nginx的配置文件nginx.conf中的 ...
- nginx配置文件中location说明
1 nginx配置文件 文件结构 ... #全局块 events { #events块 ...} http #http块 { ... #http全局块 server #server块 { ... #s ...
- 对于nginx配置文件中的fastcgi_param相关参数的理解
今天在ubuntu中搭建LNMP的时候,遇到了一个问题 在浏览器中访问.php文件的时候,nginx不能正常解析,页面只是空白,后来百度了一下,发现了问题 在nginx的配置文件nginx.conf中 ...
- nginx配置文件说明(包含IP黑名单、代理反射、负载均衡的配置)
先看下nginx配置文件整体结构 图片来源51cto 配置文件及注解: #运行用户 主模块指令,指定Nginx Worker进程运行用户以及用户组,默认由nobody账号运行 user nobody; ...
- shell脚本中的case条件语句介绍和使用案例
#前言:这篇我们接着写shell的另外一个条件语句case,上篇讲解了if条件语句.case条件语句我们常用于实现系统服务启动脚本等场景,case条件语句也相当于if条件语句多分支结构,多个选择,ca ...
- shell脚本中的if条件语句介绍和使用案例
#前言:在生产工作中if条件语句是最常使用的,如使用来判断服务状态,监控服务器的CPU,内存,磁盘等操作,所以我们需要熟悉和掌握if条件语句. #简介 if条件语句,简单来说就是:如果,那么.有if单 ...
随机推荐
- Python——第二章:文件操作
文件操作 1. 找到这个文件. 双击打开它 open(文件路径, mode="", encoding="") 文件路径: 1. 绝对路径 d:/test/xxx ...
- DNSlog注入(利用DNSlog平台将SQL盲注变成回显注入)
前言 什么是UNC 什么是DNSlog注入 DNSlog注入的条件 防止DNSlog注入的几个措施 sqli-labs试验 前言 前几天面试的时候,面试官问我知不知道OOB(带外数据). 当时我蒙了, ...
- SQLite3使用笔记(1)——查询
目录 1. 概述 2. 详论 2.1. 打开/关闭数据库 2.2. 数据查询 3. 参考 1. 概述 SQLite是一个嵌入式SQL数据库引擎.与大多数其他 SQL 数据库不同,SQLite 没有单独 ...
- PostgreSQL常用运维SQL
一.数据库连接 1.获取数据库实例连接数 select count(*) from pg_stat_activity; 2.获取数据库最大连接数 show max_connections 3.查询当前 ...
- 实战解析丨如何对Mysql连接请求的tcpdump内容进行分析
摘要:tcpdump是通过拦截发送和收到的网络连接中的TCP/IP和其他数据包,通过tcpdump工具帮助我们分析三次握手或者四次挥手的数据包情况,就能很容易的帮助我们分析出网络在哪一个步骤出的问题. ...
- GaussDB(for Redis)双活容灾支持4大应用场景,为业务安全保驾护航
摘要:GaussDB(for Redis)的双活解决方案,支持同域主备.同域双主.异地主备.异地双主四大应用场景,提供了安全可靠的容灾能力. 一场火灾引发的思考 2021年3月10日,欧洲某云服务提供 ...
- Java的这个强大功能,很多人都不知道
摘要:大多数框架采用单一的语言所开发.JNI这项Java中提供的强大功能,却逐渐的被人遗忘了. 本文分享自华为云社区<Java中一个逐渐被遗忘的强大功能,强到你难以置信!!>,作者:冰 河 ...
- 火山引擎DataLeap背后的支持者 - 工作流编排调度系统FlowX
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 背景介绍 业务场景 在日常工作中,我们时不时需要对某些逻辑进行重复调度,这时我们就需要一个调度系统.根据不同的调度 ...
- JDK,Mysql,Tomcat Linux安装
Linux的软件安装 JDK安装 注意:rpm与软件相关命令 相当于window下的软件助手 管理软件 步骤: 1)查看当前Linux系统是否已经安装java 输入 rpm -qa | grep ja ...
- 第04讲:Flink 常用的 DataSet 和 DataStream API
Flink系列文章 第01讲:Flink 的应用场景和架构模型 第02讲:Flink 入门程序 WordCount 和 SQL 实现 第03讲:Flink 的编程模型与其他框架比较 第04讲:Flin ...