一,重定向功能
Rewrite是Nginx服務器提供的一個重要的功能,它可以實現URL重定向功能。
rewrite regex replacement [flag];
rewrite的含義:該指令是實現URL重寫的指令。
regex的含義:用於匹配URI的正則表達式。
replacement:將regex正則匹配到的內容替換成 replacement。
flag: flag標記。
flag有如下值:
last: 本條規則匹配完成后,繼續向下匹配新的location URI 規則。(不常用)
break: 本條規則匹配完成即終止,不再匹配后面的任何規則(不常用)。
redirect: 返回302臨時重定向,瀏覽器地址會顯示跳轉新的URL地址。
permanent: 返回301永久重定向。瀏覽器地址會顯示跳轉新的URL地址。
列如:
rewrite ^/(.*) http://www.baidu.com/$1 permanent;
說明:
rewrite 為固定關鍵字,表示開始進行rewrite匹配規則。
regex 為 ^/(.*)。 這是一個正則表達式,匹配完整的域名和后面的路徑地址。
replacement就是 http://www.baidu.com/1這塊了,其中1這塊了,其中1是取regex部分()里面的內容。如果匹配成功后跳轉到的URL。
flag 就是 permanent,代表永久重定向的含義,即跳轉到 http://www.baidu.com/$1 地址上。
location /tv { rewrite ^(.*) http://s.jktv.tv/wifi/test/video/short-video/ redirect; }
二,防盜鏈
注:因客戶端請求可以模擬referers來源,所以該方法也不是最好的解決方式
如下基本配置,當有網絡連接對以 gif、jpg、png為后綴的圖片資源時候、當有以swf、flv為后綴的媒體資源時、或以 rar、zip為后綴的壓縮資源發起請求時,如果檢測到Referer頭域中沒有符合 valid_referers指令的話,那么說明不是本站的資源請求。
location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip)$ 該配置的含義是 設置防盜鏈的文件類型。
valid_referers none blocked www.xxx.com www.yyy.com *.baidu.com *.tabobao.com; 可以理解為白名單,允許文件鏈出的域名白名單,如果請求的資源文件不是以這些域名開頭的話,就說明請求的資源文件不是該域下的請求,因此可以判斷它是盜鏈。因此如果不是該域下的請求,就會使用 Rewrite進行重定向到 http://www.xxx.com/images/forbidden.png 這個圖片,比如這張圖片是一個x或其他的標識,然后其他的網站就訪問不了你這個圖片哦。
server { listen 8080; server_name xxx.abc.com location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip)$ { valid_referers none blocked www.xxx.com www.yyy.com *.baidu.com *.tabobao.com; if ($invalid_referer) { rewrite ^/ http://www.xxx.com/images/forbidden.png; } } }