最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

nginx if 指令的具體使用

 更新時(shí)間:2024年05月11日 09:33:28   作者:sayyy  
if指令該指令用來(lái)支持條件判斷,并根據(jù)條件判斷結(jié)果選擇不同的Nginx配置,本文主要介紹了nginx if 指令的具體使用,具有一定的參考價(jià)值,感興趣的可以了解一下

nginx if 指令

參考這里

Syntax:	if (condition) { ... }
Default:	—
Context:	server, location

if指令的格式如下:

if (condition) { ... }

condition可以是如下類型:

  • 變量名,如果變量的值是空字符串或者0表示false
  • 變量使用“=”和“!=”來(lái)跟字符串比較
  • 可以是正則表達(dá)式
  • 檢查文件是否存在使用“-f” 和 “!-f”
  • 檢查目錄是否存在使用 “-d” 和 “!-d”
  • 檢查文件、目錄、符號(hào)鏈接是否存在使用 “-e” 和 “!-e”
  • 檢查是否是可執(zhí)行文件使用“-x” 和 “!-x”

if指令不支持多條件、不支持嵌套、不支持else,與常見(jiàn)的條件表達(dá)式不同的特點(diǎn)是,if指令使用單個(gè)等號(hào)=而不是雙等號(hào)==表達(dá)等值比較。

直接判斷變量

  • 如果變量值是空字符串或者"0"時(shí),判定為false;否則,判定為true。
  • 1.0.1版本前,任何以"0"開(kāi)頭的字符串,判定為false。
if ($slow) {
    limit_rate 10k;
}

if ($invalid_referer) {
    return 403;
}

判斷是否等于字符串

使用 “=” 和 “!=” 操作符判斷是否等于字符串

if ($request_method = POST) {
    return 405;
}

判斷變量是否匹配正則表達(dá)式

使用 “~” 和 “!~” 操作符判斷變量是否匹配正則表達(dá)式。

  • ~:判斷時(shí)區(qū)分字符大小寫(xiě)
  • ~*:判斷時(shí)不區(qū)分字符大小寫(xiě)
  • !~:判斷時(shí)區(qū)分字符大小寫(xiě)
  • !~*:判斷時(shí)不區(qū)分字符大小寫(xiě)
if ($http_user_agent ~ MSIE) {
    rewrite ^(.*)$ /msie/$1 break;
}

if ($http_cookie ~* "id=([^;]+)(?:;|$)") {
    set $id $1;
}

文件及目錄判斷

  • “-f”, “!-f”:判斷指定的路徑是否為存在且為文件;
  • “-d”, “!-d”:判斷指定的路徑是否為存在且為目錄;
  • “-e”, “!-e”:判斷指定的路徑是否存在,文件或目錄均可;
  • “-x”, “!-x”:判斷指定路徑的文件是否存在且可執(zhí)行;

示例1:判斷index.html是否存在

location =/index.html {
	if (!-f "$document_root/index.html") {
	    rewrite ^(.*)$  /index2.html;
	}
}

示例2:判斷URL中是否存在某個(gè)參數(shù)Parameter

if ($query_string ~* ".*(?:^|\?|&)method=autoGenerateIndex(?:(?:&.*)|$)") { 
	...
}

示例3:判斷URI中是否為某個(gè)特定路徑

if ($request_uri ~* "^/app/stat/"){
    ...
}

示例4:開(kāi)放白名單內(nèi)的功能,其余功能禁止訪問(wèn)

# 白名單開(kāi)關(guān)。false,打開(kāi);true,關(guān)閉。
set $isInWhiteList 'false';
# 白名單1:統(tǒng)計(jì)
if ($request_uri ~* "^/app/stat/"){
    set $isInWhiteList  'true';
}
# 白名單2:ajax接口
if ($request_uri ~* "^/app/ajax/"){
    set $isInWhiteList 'true';
}
# 采用白名單方式放行功能
location /app {
    if ($isInWhiteList != 'true') {
        rewrite ^/ /deny;
    }
    proxy_pass  http://127.0.0.1:8080;
}

# 禁止訪問(wèn)
location =/deny {
    deny all;  
}

示例5:if-else

# 條件:if
if ($request_uri ~* "abc"){
	set $flag '${flag}1';
}
# 條件:else
if ($request_uri !~* "abc"){
	set $flag '${flag}2';
}

示例6:多重if判斷

server {
	...
	
	set $flag "";
	
	# 條件1:if
	if ($request_uri ~* "abc"){
		set $flag '${flag}1';
	}
	# 條件1:else
	if ($request_uri !~* "abc"){
		set $flag '${flag}2';
	}
	
	# 條件2:if
	if ($query_string ~* ".*(?:^|\?|&)method=autoGenerateIndex(?:(?:&.*)|$)") { 
		set $flag '${flag}1';
	}
	# 條件2:else
	if ($query_string !~* ".*(?:^|\?|&)method=autoGenerateIndex(?:(?:&.*)|$)") { 
		set $flag '${flag}2';
	}
	
	# 多重if完了,根據(jù)結(jié)果做相應(yīng)處理
	if ($flag = '11') {
		...
	}
	if ($flag = '12') {
		...
	}
	if ($flag = '21') {
		...
	}
	if ($flag = '22') {
		...
	}
	
	location / {
		...
	}
}

參考

https://nginx.org/en/docs/http/ngx_http_rewrite_module.html#if

Nginx的多重if判斷

到此這篇關(guān)于nginx if 指令的具體使用的文章就介紹到這了,更多相關(guān)nginx if 指令內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Nginx配置防盜鏈保護(hù)靜態(tài)資源的詳細(xì)教程

    Nginx配置防盜鏈保護(hù)靜態(tài)資源的詳細(xì)教程

    防盜鏈?zhǔn)且环N通過(guò)檢查 HTTP 請(qǐng)求頭中的 Referer 字段來(lái)限制資源訪問(wèn)的技術(shù),常用于保護(hù)圖片、視頻等靜態(tài)資源不被其他網(wǎng)站直接引用,以下是Nginx防盜鏈的原理、配置步驟以及測(cè)試方法,幫助你快速配置和驗(yàn)證防盜鏈功能,需要的朋友可以參考下
    2025-02-02
  • 基于Nginx搭建WebDAV服務(wù)的詳細(xì)過(guò)程

    基于Nginx搭建WebDAV服務(wù)的詳細(xì)過(guò)程

    在搭建 Joplin 筆記服務(wù)的時(shí)候,發(fā)現(xiàn)了可以通過(guò) WebDAV 服務(wù)來(lái)實(shí)現(xiàn)云筆記的功能,所以本篇就來(lái)介紹一下,怎么快速搭建 WebDAV 服務(wù),需要的朋友可以參考下
    2022-12-12
  • Nginx用戶認(rèn)證配置方法詳解(域名/目錄)

    Nginx用戶認(rèn)證配置方法詳解(域名/目錄)

    Nginx超級(jí)強(qiáng)大它可以單獨(dú)為一個(gè)域名設(shè)置用戶認(rèn)證,方法也很簡(jiǎn)單我們只要生成用戶認(rèn)證的用戶名和密碼,然后再Nginx添加auth認(rèn)證配置即可
    2013-08-08
  • nginx訪問(wèn)報(bào)403錯(cuò)誤的幾種情況詳解

    nginx訪問(wèn)報(bào)403錯(cuò)誤的幾種情況詳解

    最近訪問(wèn)新安裝的nginx,發(fā)現(xiàn)報(bào)403錯(cuò)誤,所以這篇文章主要給大家介紹了關(guān)于nginx訪問(wèn)報(bào)403錯(cuò)誤的幾種情況,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • Nginx服務(wù)器的反向代理proxy_pass配置方法講解

    Nginx服務(wù)器的反向代理proxy_pass配置方法講解

    這篇文章主要介紹了Nginx服務(wù)器的反向代理proxy_pass配置方法講解,包括經(jīng)常被提到的url的/問(wèn)題的相關(guān)說(shuō)明,需要的朋友可以參考下
    2016-01-01
  • Nginx啟動(dòng)顯示80端口占用問(wèn)題的解決方案

    Nginx啟動(dòng)顯示80端口占用問(wèn)題的解決方案

    這篇文章主要介紹了Nginx啟動(dòng)顯示80端口占用問(wèn)題的解決方案,文中通過(guò)代碼示例和圖文講解的非常詳細(xì),對(duì)大家解決問(wèn)題有一定的幫助,需要的朋友可以參考下
    2024-04-04
  • Nginx服務(wù)器中配置非80端口的端口轉(zhuǎn)發(fā)方法詳解

    Nginx服務(wù)器中配置非80端口的端口轉(zhuǎn)發(fā)方法詳解

    這篇文章主要介紹了Nginx服務(wù)器中配置非80端口的端口轉(zhuǎn)發(fā)方法詳解,文中使用到了Nginx中的proxy_pass配置項(xiàng),需要的朋友可以參考下
    2016-04-04
  • 詳解Nginx虛擬主機(jī)配置中server_name的具體寫(xiě)法

    詳解Nginx虛擬主機(jī)配置中server_name的具體寫(xiě)法

    這篇文章主要介紹了Nginx虛擬主機(jī)配置中server_name的具體寫(xiě)法,server_name服務(wù)器名是虛擬主機(jī)中必須配置的重要參數(shù),需要的朋友可以參考下
    2016-03-03
  • nginx不允許iframe嵌套報(bào)表的解決過(guò)程

    nginx不允許iframe嵌套報(bào)表的解決過(guò)程

    該文章主要了Nginx配置中X-Frame-Options設(shè)置導(dǎo)致iframe嵌套頁(yè)面出現(xiàn)問(wèn)題的解決方法,具體表現(xiàn)為Nginx配置禁止了iframe嵌套,通過(guò)編輯Nginx配置文件,添加或修改相應(yīng)指令,保存并重新加載配置文件即可解決問(wèn)題,該文章為個(gè)人經(jīng)驗(yàn)總結(jié),僅供參考
    2026-05-05
  • Nginx+Proxy_cache高速緩存配置

    Nginx+Proxy_cache高速緩存配置

    本文主要介紹了Nginx+Proxy_cache高速緩存配置,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2026-01-01

最新評(píng)論

依安县| 张家港市| 顺义区| 龙山县| 璧山县| 台中市| 巴马| 和静县| 同江市| 潮安县| 江都市| 侯马市| 安乡县| 怀柔区| 武义县| 思茅市| 石林| 临夏市| 依安县| 牡丹江市| 资中县| 伊通| 赣州市| 丽江市| 海原县| 右玉县| 容城县| 屏东市| 瑞金市| 朝阳市| 盖州市| 汽车| 浙江省| 鄂尔多斯市| 荥经县| 定安县| 富顺县| 三明市| 淮南市| 漾濞| 柞水县|