[记录]Nginx配置实现&&和||的方法实例

Posted wsjhk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[记录]Nginx配置实现&&和||的方法实例相关的知识,希望对你有一定的参考价值。

nginx配置文件中if的&&和||的实现(nginx不支持&&和||的写法)


1.与(&&)的写法:


set $condiction ‘‘;
if ($http_user_agent ~ "Chrome"){
set $condiction a;
}
if ($args ~ "r=hao123"){
set $condiction "${condiction}b";
}
if ($condiction = ab){
rewrite ^/(.*)$ https://www.hao123.com/?tn=94408350_hao_pg;
}
说明:当浏览器是Chrome并且url的参数是r=hao123的时候做重定向。

  rewrite有四个flag,不带flag时默认是redirect(302),如下:

  1)last(重写后的规则,会继续用重写后的值去匹配下面的location。)

  2)break(重写后的规则,不会去匹配下面的location。使用新的规则,直接发起一次http请求了。)

  3)permanent(301永久重定向,搜索引擎在抓取新内容的同时也将旧的网址替换为重定向之后的网址)

  4)redirect(302临时重定向,搜索引擎会抓取新的内容而保留旧的网址)(网站换量的场景下使用)

 

2.或(||)的写法:


set $condiction 0;
if ($http_x_forwarded_for ~ " ?xxx\.xxx\.xxx\.xx1$"){
set $condiction 1;
}
if ($http_x_forwarded_for ~ " ?xxx\.xxx\.xxx\.xx2$"){
set $condiction 1;
}
if ($condiction){
rewrite ^/(.*)$ https://www.hao123.com/?tn=94408350_hao_pg;
}
说明:当ip是xxx.xxx.xxx.xx1或xxx.xxx.xxx.xx2的时候做重定向。

 

3.结合上面两段代码,实现禁止IP访问,禁止Chrome浏览器并且url参数是r=hao123的访问。
set $condiction1 true;
set $condiction2 ‘‘;
if ($http_user_agent ~ "Chrome") {
set $condiction2 a;
}
if ($args ~ "r=hao123") {
set $condiction2 "${condiction2}b";
}
if ($condiction2 = ab) {
set $condiction1 false;
}

if ($http_x_forwarded_for ~ " ?xxx\.xxx\.xxx\.xx1$") {
set $condiction1 false;
}
if ($http_x_forwarded_for ~ " ?xxx\.xxx\.xxx\.xx2$") {
set $condiction1 false;
}

if ($condiction1 = false) {
return 403;
}










































以上是关于[记录]Nginx配置实现&&和||的方法实例的主要内容,如果未能解决你的问题,请参考以下文章

Nginx访问日志日志切割及静态文件不记录日志和过期时间的配置

Nginx实现负载均衡&Nginx缓存功能(转)

菜鸟nginx源代码剖析 配置与部署篇 手把手实现nginx "I love you"

Docker&Nginx-安装与配置

手把手教你安装配置Nginx服务器Windows&Linux

手把手教你安装配置Nginx服务器Windows&Linux