Nginx(動靜分離、防盜鏈、LVS)
Nginx rewrite規則
Rewrite規則含義就是某個URL重寫成特定的URL,從某種意義上說為了美觀或者對搜尋引擎友好,提高收錄量及排名等。
rewrite <regex> <replacement> [flag];
關鍵字 正則 替代內容 flag標記
Rewrite規則的flag標記主要有以下幾種:
1) last : 相當於Apache裡的(L)標記,表示完成rewrite;
2) break: 本條規則匹配完成後,終止匹配,不再匹配後面的規則
3) redirect: 返回302臨時重定向,瀏覽器地址會顯示跳轉後的URL地址
4) permanent:
last和break用來實現URL重寫,瀏覽器位址列URL地址不變
以下是兩個例子
a) 例如使用者訪問www.james1.com,想直接跳轉到網站下面的某個頁面,www.james1.com/new.index.html如何來實現呢? 我們可以使用Nginx Rewrite 來實現這個需求,具體如下:在server中加入如下語句即可:
rewrite ^/$ http://www.test.com/index01.html permanent;
rewrite <regex> <replacement> [flag];
關鍵字 正則 替代內容 flag標記
*代表前面0或更多個字元 +代表前面1或更多個字元
?代表前面0或1個字元 ^代表字串的開始位置
$代表字串結束的位置 。為萬用字元,代表任何字元
b) 例如多個域名跳轉到同一個域名,nginx rewrite規則寫法如下:
server
{
listen 80;
server_name www.james1.com;
if ($host != ‘www.james1.com’ ) {
rewrite ^/(.*)$ http://www.james1.com/$1 permanent;
}
格式:
rewrite <regex> <replacement> [flag];
關鍵字 正則 替代內容 flag標記
說明:
rewrite為固定關鍵字,表示開始進行rewrite匹配規則、
regex部分是 ^/(.*) ,這是一個正則表示式,匹配完整的域名和後面的路徑地址
replacement部分是http://www.james1.com/$1,$1是取自regex部分( )裡的內容。匹配成功後跳轉到的URL。
flag部分 permanent表示永久301重定向標記,即跳轉到新的 http://www.james1.com/$1 地址上
Nginx 防盜鏈
什麼是防盜鏈
比如http://www.james1.com/download/Tokyohot.rmvb 這個視訊下載地址
加上以下配置,實現防盜鏈
server {
listen 80;
server_name www.james1.com *.james.com;
location ~* \.(rmvb|jpg|png|swf|flv)$ {
valid_referers none blocked www.james1.com;
root html/b;
if ($invalid_referer) {
#rewrite ^/ http://www.james1.com/403.html;
return 403;
}
}
}
第一行:rmvb|jpg|png|swf|flv表示對rmvb|jpg|png|swf|flv字尾的檔案實行防盜鏈
第二行:www.james1.com表示對此域名開通白名單,比如在www.test.com的index.html引用download/Tokyohot.rmvb,無效
if{$invalid_referer}裡面內容的意思是,如果請求不是從www.james.com白名單發出來的請求,直接返回403也是可以。
如果在伺服器端用 http://127.0.0.1:8080/download/Tokyohot.rmvb, 是不可以訪問到的。
或者用如下設定也可以:
location ~* \.(rmvb|jpg|png|swf|flv)${
if ($host != 'www.james1.com') {
return 403;
}
}
動靜分離
Nginx動靜分離是讓動態網站裡的動態網頁根據一定規則把不變的資源和經常變的資源區分開來,動靜資源做好了拆分以後,我們就可以根據靜態資源的特點將其做快取操作,這就是網站靜態化處理的核心思路。原理如下圖
注意事項:
1,WEB專案開發時要注意,將靜態資源儘量放在一個static資料夾
2,將static靜態資原始檔夾放到Nginx可以取到的位置
3,頁面要建立全域性變數,方便修改路徑
4,修改nginx.conf的location, 匹配靜態資源請求
Ps: 前端引用檔案js或css檔案時,最好路徑前加一個公共變數,以便跨伺服器時一處修改多處作用。