日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux中的or和and的区别,扣丁学堂红帽Linux开发Nginx实现IF语句AND和OR多重判断

發布時間:2024/1/1 linux 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux中的or和and的区别,扣丁学堂红帽Linux开发Nginx实现IF语句AND和OR多重判断 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、NginxRewrite規則相關指令有if、rewrite、set、return、break等

1.其中rewrite是最關鍵的指令。一個簡單的NginxRewrite規則語法如下:

rewrite^/b/(.*)\.html/play.php?video=$1last;

break;

2.如果加上if語句,示例如下:

if(!-f$request_filename)

rewrite^/img/(.*)$/site/$host/images/$1last;

二、Nginx與Apache的Rewrite規則實例對比

簡單的Nginx和Apache重寫規則區別不大,基本上能夠完全兼容。例如:

ApacheRewrite規則:

RewriteRule^/(mianshi|xianjing)/$/zl/index.php?name=$1[L]

RewriteRule^/ceshi/$/zl/ceshi.php[L]

RewriteRule^/(mianshi)_([a-zA-Z]+)/$/zl/index.php?name=$1_$2[L]

RewriteRule^/pingce([0-9]*)/$/zl/pingce.php?id=$1[L]

NginxRewrite規則:

rewrite^/(mianshi|xianjing)/$/zl/index.php?name=$1last;

rewrite^/ceshi/$/zl/ceshi.phplast;

rewrite^/(mianshi)_([a-zA-Z]+)/$/zl/index.php?name=$1_$2last;

rewrite^/pingce([0-9]*)/$/zl/pingce.php?id=$1last;

三、NGINX實現IF語句里的AND,OR多重判斷

1.nginx的配置中不支持if條件的邏輯與/邏輯或運算,并且不支持if的嵌套語法,我們可以用變量的方式來實現:

具體方法為AND就用變量疊加,OR就用0或1切換。

1)首先是偽代碼(即不被nginx支持)寫在這里只是為了方便理解:

if($remote_addr~"^(12.34|56.78)"&&$http_user_agent~*"spider"){

return403;

}

這是等效的,并真實可用的配置

set$flag0;

if($remote_addr~"^(12.34|56.78)"){

set$flag"${flag}1";

}

if($http_user_agent~*"spider"){

set$flag"${flag}2";

}

if($flag="012"){

return403;

}

2)服務器真實生效的配置

location/{

if($request_filename~^(.+)/(.+)$){

set$l2$1;

}

set$ll$request_filename;

if(!-e$request_filename){

set$l3"3";

}

if(!-e$l2){

set$l4"1$l3";

}

if($l4=13){

rewrite^(.*)$https://www.baidu.com;

}

access_log/tmp/pythotab-access.logxingcheng;

error_log/tmp/pythotab-error.log;

}

釋義:

a.$request_filename為被請求文件的路徑,$request_filename~^(.+)/(.+)$為被請求文件的上級目錄信息。可以將$l2定義在日志格式中,通過日志查看輸出是否成功。

b.通過set$l4"1$l3",實際上就代替了邏輯與運算。

四、nginx的rewrite規則參考

-~為區分大小寫匹配

-~*為不區分大小寫匹配

-!~和!~*分別為區分大小寫不匹配及不區分大小寫不匹

--f和!-f用來判斷是否存在文件

--d和!-d用來判斷是否存在目錄

--e和!-e用來判斷是否存在文件或目錄

--x和!-x用來判斷文件是否可執行

-last相當于Apache里的[L]標記,表示完成rewrite,呵呵這應該是最常用的

-break終止匹配,不再匹配后面的規則

-redirect返回302臨時重定向地址欄會顯示跳轉后的地址

-permanent返回301永久重定向地址欄會顯示跳轉后的地址

-$args

-$content_length

-$content_type

-$document_root

-$document_uri

-$host

-$http_user_agent

-$http_cookie

-$limit_rate

-$request_body_file

-$request_method

-$remote_addr

-$remote_port

-$remote_user

-$request_filename

-$request_uri

-$query_string

-$scheme

-$server_protocol

-$server_addr

-$server_name

-$server_port

-$uri

作者:扣丁學堂

鏈接:https://www.jianshu.com/p/8e90266ba77e

總結

以上是生活随笔為你收集整理的linux中的or和and的区别,扣丁学堂红帽Linux开发Nginx实现IF语句AND和OR多重判断的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。