referfer 防盜鏈 視訊和圖片 頁面訪問時403 效果 其他頁面無法引用 資源 nginx配置
1. location ~* .*.mp4$ {
2. expires 30d;
3. # root /www/wwwroot/default/learnlaravel5/public/uploads/;
4. valid_referers none blocked 192.126.118.132 *.192.126.118.132 *.baidu.com *.google.com *.sogo.com;
5. if ($invalid_referer){
6. return 403;
7. # #rewrite ^/ http://www.baidu.com;
8. }
9. mp4;
10. }
#設定圖片防盜鏈
location ~* .*.(gif|png|jpeg|gif|jpg|bmp|swf)$ {
# location /uploads/ {
expires 30d;
# root /www/wwwroot/default/learnlaravel5/public/uploads/video/;
valid_referers *.192.126.118.132 192.126.118.132 *.baidu.com *.google.com *.sogo.com;
if ($invalid_referer){
return 403;
#rewrite ^/ http://www.baidu.com;
}
}
這裡是圖片和視訊的防盜鏈,我就解釋一下視訊的配置意思吧,這裡我方便敘述,所以打了行號,要貼上複製的話,請去掉前邊的行號,但是,也請搞清楚各行的意思,免得出錯了找我啊,嘿嘿
第一行 location ~* .*.mp4$ { 這是一個正則匹配,取出處理靜態檔案的請求的字尾,這裡說一下,客戶端訪問伺服器,瀏覽器請求的順序,
域名解析 --> 發起TCP的3次握手 --> 建立TCP連線後發起http請求 --> 伺服器響應http請求,瀏覽器得到html程式碼 --> 瀏覽器解析html程式碼,並請求html程式碼中的資源(如js、css、圖片等) --> 瀏覽器對頁面進行渲染呈現給使用者 --> 四次揮手結束
這裡我也不做多的解釋,有興趣可以去看看,搜搜
第二行 expires 30d; 對於站點中不經常修改的靜態內容(如圖片,JS,CSS),可以在伺服器中設定expires過期時間,控制瀏覽器快取,達到有效減小頻寬流量,降低伺服器壓力的目的。 說一下單位,d是天,30d就是30天,1h就是一小時
第三行 root /www/wwwroot/default/learnlaravel5/public/uploads/; 這是規定匹配目錄,即是說當訪問這個資料夾的MP4檔案時,執行下面的規則,如果你前面有規定root的目錄,這裡可以不用謝,即是說,檔案的目錄,在你的網站目錄裡,就可以不用寫,跟root不是在一個目錄的話,就要寫了。
第四行 valid_referers none blocked 192.126.118.132 *.192.126.118.132 *.baidu.com *.google.com *.sogo.com; 這行的意思規定哪些網站可以正常訪問,前面的*號,也是正則匹配的啦,www,或者http或者https或者其他的,這裡要把自己的網站寫上啊,其他的百度谷歌什麼的,隨你啦
第五行 if ($invalid_referer){ 這個就是一個if判斷,$invalid_referer 的意思就是,當訪問的路徑不是來自於上面你規定的那些,那麼這個變數的值就會等於1,從而執行裡面的return 403,
第六行 return 403; 即是返回一個錯誤碼,403,也可以直接重定向到第七行 那裡寫的一樣的一個網址 ,可以是你自己的,或者是一張403的圖片都可以的,看你啦,
另外想說的就是,瀏覽器有快取,測試視訊的時候,即是自己的網站訪問的時候,可以載入,別的頁面直接引入視訊的也可以播放,那麼也有可能是瀏覽器快取的問題,清空一下就好了,還是就是圖片的話,我這邊用的nginx的伺服器,tail -200f access.log 就可以看到圖片或者視訊是否訪問成功,access.log是nginx的日誌啦,任何經過nginx的訪問,都有記錄。圖片意思也是這樣的,我這裡只有mp4的視訊,所以只配置mp4,其他的需要的話,加上就好了,還有就是正則匹配的問題,有好幾個精度,我這裡用這個就好了,要說正則的話,又是一大堆。