4..41靜態檔案過期快取4.42Nginx防盜鏈4.43-45訪問控制1/2/3
阿新 • • 發佈:2019-02-26
靜態檔案過期快取
Nginx防盜鏈
訪問控制1/2/3
靜態檔案過期快取
什麼是靜態檔案的過期時間
讓圖片之類的靜態檔案,快取在客戶端的瀏覽器中,在沒有過期之前,瀏覽器不需要請求該圖片。
就是為了讓這些圖片有一個時效性。
如果伺服器上圖片已經做了更新,但是客戶端訪問到的還是舊的。
如何配置:
vi 虛擬主機配置檔案,增加或更改 location ~* \.(png|jpeg|gif|js|css|bmp|flv)$ { expires 1d; access_log off; }
補充:
curl -x 用來指定目標伺服器的IP和埠,例:curl -x127.0.0.1:80 -I www.aminglinux.cc
bc 是一個linux系統下面的計算器,yum install -y bc
Nginx防盜鏈
盜鏈
- 盜鏈是指服務提供商自己不提供服務的內容,通過技術手段繞過其它有利益的最終使用者介面(如廣告),直接在自己的網站上向終端使用者提供其它服務提供商的服務內容,騙取終端使用者的瀏覽和點選率。受益者不提供資源或提供很少的資源,而真正的服務提供商卻得不到任何的收益。
防盜鏈
- 要實現防盜鏈,我們就必須先理解盜鏈的實現原理,提到防盜鏈的實現原理就不得不從HTTP協議說起,在HTTP協議中,有一個表頭欄位叫referer,採用URL的格式來表示從哪兒連結到當前的網頁或檔案。換句話說,通過referer,網站可以檢測目標網頁訪問的來源網頁,如果是資原始檔,則可以跟蹤到顯示它的網頁地址。有了referer跟蹤來源,就可以通過技術手段來進行處理,一旦檢測到來源不是本站即進行阻止或者返回指定的頁面。
什麼叫防盜鏈?
兩個網站 A 和 B, A網站引用了B網站上的圖片,這種行為就叫做盜鏈。 防盜鏈,就是要防止A引用B的圖片。
配置:
location ~ \.(png|gif|jpeg|bmp|mp3|mp4|flv)$ { valid_referers none blocked server_names *.aming.com; #白名單 if ($invalid_referer) { #黑名單返回403 return 403; } }
補充:
rz 上傳檔案,yum install lrzsz
sz filename 這樣去把這個檔案推送到windows上
測試防盜鏈: curl -I -e "http://www.aaa.com/1.txt" http://www.aming.com/1.png
curl的-e指定自定義的referer
例項
blog.lyf.top上傳(rz)張圖片,因為沒做防盜鏈,bbs.lyf.com可以在論壇上引用它的網路圖片,不佔自己資源。
做了防盜鏈後,bbs.lyf.com帖子上引用不了
訪問控制
當我們的網站中有某一站點只是針對公司內部使用,禁止外網使用的時候可以使用訪問控制來實現 (限 IP)
-
編輯虛擬主機配置檔案
# vim /usr/local/nginx/conf/vhost/test.com.conf
-
新增如下內容
allow 127.0.0.1; //現實生產中,該白名單地址應設定為公司外網地址。 deny all;
-
使用curl命令測試,可以看到,使用指定白名單ip可以正常訪問,使用沒指定過的ip訪問該站點就會受到限制。
# curl -x127.0.0.1:80 test.com/admin/1.jpg fangwen kongzhi ceshi ` # curl -x192.168.254.131:80 test.com/admin/1.jpg <html> <head><title>403 Forbidden</title></head> <body bgcolor="white"> <center><h1>403 Forbidden</h1></center> <hr><center>nginx/1.15.3</center> </body> </html>
設定指定目錄下的PHP檔案解析受限或者目錄
限制某個目錄
location /admin/ //在admin目錄下操作
{
allow 127.0.0.1;
allow 192.168.112.136;
deny all;
}
限制某個目錄下的某類檔案
location ~ .*(upload|image)/.*\.php$
{
deny all;
}
-
編輯虛擬主機配置檔案
# vim /usr/local/nginx/conf/vhost/test.com.conf
-
新增內容
location ~ .*(upload|image)/.*\.php$ { deny all; }
-
在test.com目錄下建立一個upload目錄,並寫一個PHP檔案1.php
-
測試配置檔案是否有問題,並重新載入
# /usr/local/nginx/sbin/nginx -t nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful [root[@localhost] ~]# /usr/local/nginx/sbin/nginx -s reload
-
使用curl測試限制解析是否成功,可以看到返回的程式碼是403,表示限制解析成功
[root[@localhost] ~]# curl -x127.0.0.1:80 test.com/upload/1.php <html> <head><title>403 Forbidden</title></head>