nginx重定向到其他url方法_高级开发必须掌握Nginx之四,if、set、return

set

Syntax:set $variable value;

Default:—

Context:server, location, if

set可以为变量设置值,值可以为字符串/变量以及它们的组合。

例如:

146fa868a316d8ff220526a3858f5bc9.png

return

Syntax:return code [text]; return code URL; return URL;

Default:—

Context:server, location, if

停止处理并且返回响应码给客户端,非标准代码444会在不发送响应头的情况下关闭连接。

从 0.8.42版本开始, 支持为状态码(for codes 301, 302, 303, 307, and 308)跳转URL为其他的状态码返回返回体数据。返回体或者跳转的URL支持包含变量。特殊情况,重定向URL可以指定为该服务器的本地URI,在这种情况下,完整的跳转URL依据请求 scheme ($scheme) 和the server_name_in_redirect and port_in_redirect 指令。

例如:

请求重定向到一个新域名

dd56c6af81d9e4cbff26de468d0bb011.png

请求直接返回数据

ab456944ed0716b17acc9afe1e9ac297.png

if

Syntax:if (condition) { … }

Default:—

Context:server, location

对特定的条件进行判断,如果为true,括号内将会被执行。

正则表达式匹配:

=:等值比较;

~:区分大小写的正则表达式模式匹配

~*:不区分大小写的正则表达式模式匹配

!~:区分大小写的正则表达式模式不匹配

!~*:不区分大小写的正则表达式模式不匹配

文件及目录匹配判断:

-f, !-f:判断指定的路径是否为存在且为文件;

-d, !-d:判断指定的路径是否为存在且为目录;

-e, !-e:判断指定的路径是否存在,文件或目录均可;

-x, !-x:判断指定路径的文件是否存在且可执行;

例如:

8ae6656d3a25650828e589b52fa21c20.png

AND,OR多重判断

nginx的配置中不支持if条件的&& ||运算 ,并且不支持if的嵌套语法,但是我们可以用变量的方式来实现:

具体方法为AND 就用变量叠加,OR就用0或1切换。

例如我们的目标(伪代码):

cbadeb6115d2628a36f1cd1166f9b248.png

我们可以这么做

293492f33215c2ca4e7cc33b4bdd7df9.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值