1.標(biāo)志位,放在每一條規(guī)則的最后面
last : 相當(dāng)于Apache的[L]標(biāo)記,表示完成rewrite
break : 停止執(zhí)行當(dāng)前虛擬主機(jī)的后續(xù)rewrite指令集履羞,一旦匹配不再往后匹配
redirect : 返回302臨時(shí)重定向莺琳,地址欄會(huì)顯示跳轉(zhuǎn)后的地址
permanent : 返回301永久重定向,地址欄會(huì)顯示跳轉(zhuǎn)后的地址
2.全局變量
全局變量,可以直接在定義的規(guī)則中使用撤摸,不知道可以查
下面是可以用作if判斷的全局變量
$args : #這個(gè)變量等于請(qǐng)求行中的參數(shù),同$query_string
$content_length : 請(qǐng)求頭中的Content-length字段。
$content_type : 請(qǐng)求頭中的Content-Type字段准夷。
$document_root : 當(dāng)前請(qǐng)求在root指令中指定的值钥飞。
$host : 請(qǐng)求主機(jī)頭字段,否則為服務(wù)器名稱冕象。
$http_user_agent : 客戶端agent信息
$http_cookie : 客戶端cookie信息
$limit_rate : 這個(gè)變量可以限制連接速率代承。
$request_method : 客戶端請(qǐng)求的動(dòng)作,通常為GET或POST渐扮。
$remote_addr : 客戶端的IP地址论悴。
$remote_port : 客戶端的端口。
$remote_user : 已經(jīng)經(jīng)過Auth Basic Module驗(yàn)證的用戶名墓律。
$request_filename : 當(dāng)前請(qǐng)求的文件路徑膀估,由root或alias指令與URI請(qǐng)求生成。
$scheme : HTTP方法(如http耻讽,https)察纯。
$server_protocol : 請(qǐng)求使用的協(xié)議,通常是HTTP/1.0或HTTP/1.1针肥。
$server_addr : 服務(wù)器地址饼记,在完成一次系統(tǒng)調(diào)用后可以確定這個(gè)值。
$server_name : 服務(wù)器名稱慰枕。
$server_port : 請(qǐng)求到達(dá)服務(wù)器的端口號(hào)具则。
$request_uri : 包含請(qǐng)求參數(shù)的原始URI,不包含主機(jī)名具帮,如:”/foo/bar.php?arg=baz”博肋。
$uri : 不帶請(qǐng)求參數(shù)的當(dāng)前URI,$uri不包含主機(jī)名蜂厅,如”/foo/bar.html”匪凡。
$document_uri : 與$uri相同。
3.可能會(huì)用的幾個(gè)if判斷
if判斷指令
語法為if(condition){...}掘猿,對(duì)給定的條件condition進(jìn)行判斷病游。如果為真,大括號(hào)內(nèi)的rewrite指令將被執(zhí)行.
當(dāng)表達(dá)式只是一個(gè)變量時(shí)稠通,如果值為空或任何以0開頭的字符串都會(huì)當(dāng)做false
直接比較變量和內(nèi)容時(shí)礁遵,使用=或!=
~正則表達(dá)式匹配,~*不區(qū)分大小寫的匹配采记,!~區(qū)分大小寫的不匹配
-f和!-f用來判斷是否存在文件
-d和!-d用來判斷是否存在目錄
-e和!-e用來判斷是否存在文件或目錄
-x和!-x用來判斷文件是否可執(zhí)行
4.案例,前面看不懂沒事政勃,對(duì)著例子看唧龄,更容易懂
server {
listen 80;
server_name www.jd.com;
access_log logs/jd.access.log main;
if ($host = 'jd.com')
{
#將jd.com的所有請(qǐng)求全部轉(zhuǎn)到www.baidu.com,(.*)任意字符串,后面$1對(duì)其進(jìn)行引用奸远,而且使用的是301永久重定向既棺,url顯示跳轉(zhuǎn)后的地址
rewrite ^/(.*)$ http://www.baidu.com/$1 permanent;
}
location / {
root html/jd.com;
index index.html index.htm;
}
}
再來一個(gè)
server {
listen 80;
server_name www.jd.com;
access_log logs/jd.access.log main;
#301永久重定向 訪問本域名將重定向到tao.bao,與上一個(gè)的區(qū)別是不再引用請(qǐng)求字符串讽挟,不管你是請(qǐng)求的什么,都直接跳到taobao下的index.html頁面
rewrite ^/(.*)$ http://www.taobao.com/index.html permanent;
location / {
root html/jd.com;
index index.html index.htm;
}
}
再來一個(gè)
server {
listen 80;
server_name www.jd.com;
access_log logs/jd.access.log main;
#訪問 /test/ 將會(huì)被重定向到 /index.html ,且瀏覽器地址不變
rewrite ^/test/$ /index.html last;
location / {
root html/jd.com;
index index.html index.htm;
}
}
最后一個(gè):文件禁止訪問
server {
listen 80;
server_name www.jd.com;
access_log logs/jd.access.log main;
location ~ .*\.(txt|db)$ #對(duì).txt丸冕,.db結(jié)尾的文件不允許訪問
{
return 403;
}
location / {
root html/jd.com;
index index.html index.htm;
}
}