溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Nginx中怎么實(shí)現(xiàn)重定向

發(fā)布時(shí)間:2021-06-18 18:30:41 來源:億速云 閱讀:432 作者:Leah 欄目:大數(shù)據(jù)

Nginx中怎么實(shí)現(xiàn)重定向,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

Nginx Rewrite全過程詳解

flag標(biāo)記:

flag標(biāo)記有:
?	last 相當(dāng)于Apache里的[L]標(biāo)記,表示完成	rewrite
?	break 終止匹配, 不再匹配后面的規(guī)則
?	redirect 返回302臨時(shí)重定向 地址欄會(huì)顯示跳轉(zhuǎn)后的地址
?	permanent 返回301永久重定向 地址欄會(huì)顯示跳轉(zhuǎn)后的地址

例如下面這段設(shè)定nginx將某個(gè)目錄下面的文件重定向到另一個(gè)目錄,$2對(duì)應(yīng)第二個(gè)括號(hào)(.*)中對(duì)應(yīng)的字符串:
?location /download/ {?rewrite ^(/download/.*)/m/(.*)\..*$ $1/nginx-rewrite/$2.gz break;?}

nginx重定向的IF條件判斷

在server和location兩種情況下可以使用nginx的IF條件判斷,條件可以為以下幾種:

正則表達(dá)式
如:
匹配判斷
~  為區(qū)分大小寫匹配; !~為區(qū)分大小寫不匹配
~* 為不區(qū)分大小寫匹配;!~為不區(qū)分大小寫不匹配

例如下面設(shè)定nginx在用戶使用ie的使用重定向到/	nginx-ie目錄下:
if ($http_user_agent ~ MSIE) { 注釋 :  __(MSIE ->ie瀏覽器內(nèi)核)__
	rewrite ^(.*)$ /nginx-ie/$1 break;
}

文件和目錄判斷

 -f和!-f判斷是否存在文件
 -d和!-d判斷是否存在目錄
 -e和!-e判斷是否存在文件或目錄
 -x和!-x判斷文件是否可執(zhí)行
例如下面設(shè)定nginx在文件和目錄不存在的時(shí)候重定	向:
if (!-e $request_filename) {
	proxy_pass http://127.0.0.1/;
}

return

返回http代碼,例如設(shè)置nginx防盜鏈:
location ~* \.(gif|jpg|png|swf|flv)$ {
	valid_referers none blocked http://www.jefflei.com/ http://www.leizhenfang.com/;
	if ($invalid_referer) {
		return 404;
	}
}

set 設(shè)置nginx變量(待續(xù))


301重定向方法

進(jìn)行了301重定向,把www .jefflei.com和jefflei.com合并,并把之前的域名也一并合并. 有兩種實(shí)現(xiàn)方法,第一種方法是判斷nginx核心變量host(老版本是http_host):

server {
server_name www.jefflei.com jefflei.com ;
if ($host != 'www.jefflei.com' ) {
rewrite ^/(.*)$ http://www.jefflei.com/$1 permanent;
}
...
}

第二種方法:

	server {
	server_name jefflei.com;
	rewrite ^/(.*) http://www.jefflei.com/$1 permanent;
	}
	

測(cè)試了第一種方法ok,這兩種方法中, permanent是關(guān)鍵,詳細(xì)說明見nginx重定向規(guī)則說明。

last – 基本上都用這個(gè)Flag。
?break – 中止Rewirte,不在繼續(xù)匹配
?redirect – 返回臨時(shí)重定向的HTTP狀態(tài)302
?permanent – 返回永久重定向的HTTP狀態(tài)301

好了,現(xiàn)在可以檢查結(jié)果,這里可以看返回的HTTP頭信息:
http://www.seoconsultants.com/tools/headers.asp
第二種方法沒有測(cè)試成功...

測(cè)試是否定向成功

輸入:

/usr/local/nginx/sbin/nginx -t

提示:
?	the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok configuration file /usr/local/nginx/conf/nginx.conf test is successful

測(cè)試成功~ 重啟nginx~ 輸入指令~

/usr/local/nginx/sbin/nginx -s reload

重啟之后測(cè)試一下~是否成功設(shè)定完成! 

輸入指令~

curl -I imcat.tk

會(huì)輸出:

HTTP/1.1 301 Moved Permanently
?	Server: nginx/0.7.65
?	Date: Tue, 03 Aug 2010 01:12:37 GMT
?	Content-Type: text/html
?	Content-Length: 185
?	Connection: keep-alive
?	Location: http://qinfy.net/

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI