摘要:請求頭中的字段。當(dāng)前請求在指令中指定的值??蛻舳诵畔⒖蛻舳诵畔⑦@個變量可以限制連接速率。已經(jīng)經(jīng)過驗證的用戶名。請求使用的協(xié)議,通常是或。請求到達(dá)服務(wù)器的端口號。包含請求參數(shù)的原始,不包含主機名,如。
當(dāng)rewrite的重寫規(guī)則滿足不了需求時,比如需要判斷當(dāng)文件不存在時、當(dāng)路徑包含xx時等條件,則需要用到if
if語法if (表達(dá)式) { ... }
表達(dá)式語法:
當(dāng)表達(dá)式只是一個變量時,如果值為空或任何以0開頭的字符串都會當(dāng)做false
直接比較變量和內(nèi)容時,使用=或!=
-f和!-f用來判斷是否存在文件
-d和!-d用來判斷是否存在目錄
-e和!-e用來判斷是否存在文件或目錄
-x和!-x用來判斷文件是否可執(zhí)行
為了配置if的條件判斷,這里需要用到nginx中內(nèi)置的全局變量
$args 這個變量等于請求行中的參數(shù),同$query_string $content_length 請求頭中的Content-length字段。 $content_type 請求頭中的Content-Type字段。 $document_root 當(dāng)前請求在root指令中指定的值。 $host 請求主機頭字段,否則為服務(wù)器名稱。 $http_user_agent 客戶端agent信息 $http_cookie 客戶端cookie信息 $limit_rate 這個變量可以限制連接速率。 $request_method 客戶端請求的動作,通常為GET或POST。 $remote_addr 客戶端的IP地址。 $remote_port 客戶端的端口。 $remote_user 已經(jīng)經(jīng)過Auth Basic Module驗證的用戶名。 $request_filename 當(dāng)前請求的文件路徑,由root或alias指令與URI請求生成。 $scheme HTTP方法(如http,https)。 $server_protocol 請求使用的協(xié)議,通常是HTTP/1.0或HTTP/1.1。 $server_addr 服務(wù)器地址,在完成一次系統(tǒng)調(diào)用后可以確定這個值。 $server_name 服務(wù)器名稱。 $server_port 請求到達(dá)服務(wù)器的端口號。 $request_uri 包含請求參數(shù)的原始URI,不包含主機名,如:”/foo/bar.php?arg=baz”。 $uri 不帶請求參數(shù)的當(dāng)前URI,$uri不包含主機名,如”/foo/bar.html”。 $document_uri 與$uri相同。舉例說明
1、如果文件不存在則返回400
if (!-f $request_filename) { return 400; }
2、如果host不是jouypub.com,則301到j(luò)ouypub.com中
if ( $host != "jouypub.com" ){ rewrite ^/(.*)$ https://jouypub.com/$1 permanent; }
3、如果請求類型不是POST則返回405
if ($request_method = POST) { return 405; }
4、如果參數(shù)中有a=1則301到指定域名
if ($args ~ a=1) { rewrite ^ http://example.com/ permanent; }
5、在某種場景下可結(jié)合location規(guī)則來使用,如:
# 訪問 /test.html 時 location = /test.html { # 設(shè)置默認(rèn)值為xiaowu set $name xiaowu; # 如果參數(shù)中有 name=xx 則使用該值 if ($args ~* name=(w+?)(&|$)) { set $name $1; } # 301 rewrite ^ /$name.html permanent; }
上面表示:
/test.html => /xiaowu.html
/test.html?name=ok => /ok.html?name=ok
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/40533.html
摘要:原文鏈接何曉東博客主要是參數(shù)中的判斷的配置跳轉(zhuǎn),分流能減輕服務(wù)器的負(fù)載和壓力,這種是一種非常常見的服務(wù)器部署架構(gòu)。本條規(guī)則匹配完成后,終止匹配,不再匹配后面的規(guī)則。返回永久重定向,瀏覽器地址會顯示跳轉(zhuǎn)后的地址。 原文鏈接: 何曉東 博客 主要是 location 參數(shù)中的 if 判斷的配置跳轉(zhuǎn),分流能減輕服務(wù)器的負(fù)載和壓力,這種是一種非常常見的服務(wù)器部署架構(gòu)。 根據(jù) IP 最后一段的范...
摘要:語法如果相對域名或參數(shù)字符串起作用,可以使用全局變量匹配,也可以使用反向代理。不能返回限速,可以通過指令設(shè)置如果請求的文件名不存在,則反向代理到。 location正則寫法 一個示例: location = / { # 精確匹配 / ,主機名后面不能帶任何字符串 [ configuration A ] } location / { # 因為所有的地址都以 / 開...
概述 重寫URL是非常有用的一個功能,因為它可以讓你提高搜索引擎閱讀和索引你的網(wǎng)站的能力;而且在你改變了自己的網(wǎng)站結(jié)構(gòu)后,無需要求用戶修改他們的書簽,無需其他網(wǎng)站修改它們的友情鏈接;它還可以提高你的網(wǎng)站的安全性;而且通常會讓你的網(wǎng)站更加便于使用和更專業(yè)。 Nginx Rewrite規(guī)則相關(guān)指令 Nginx Rewrite規(guī)則相關(guān)指令有if、rewrite、set、return、break等,其中r...
閱讀 1487·2021-11-16 11:44
閱讀 3301·2021-09-29 09:43
閱讀 636·2019-08-30 10:52
閱讀 954·2019-08-29 11:01
閱讀 3266·2019-08-26 11:47
閱讀 2903·2019-08-23 12:18
閱讀 1373·2019-08-22 17:04
閱讀 2062·2019-08-21 17:04