1. 程式人生 > >referfer 防盜鏈 視訊和圖片 頁面訪問時403 效果 其他頁面無法引用 資源 nginx配置

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或者其他的,這裡要把自己的網站寫上啊,其他的百度谷歌什麼的,隨你啦

none 不拒絕來源頭部為空的請求  blocked  來源頭部不為空,但是裡面的值被代理或者防火牆刪除了,這些值都不以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,其他的需要的話,加上就好了,還有就是正則匹配的問題,有好幾個精度,我這裡用這個就好了,要說正則的話,又是一大堆。