nginx配合php實現防盜鏈功能

說明:服務器A:源服務器、服務器B:目標服務器php

場景:服務器A的一篇文章被服務器B經過爬蟲抓取 但圖片連接仍是經過服務器B進行訪問nginx

          此時,圖片數量多或文件過大,會對服務器A形成帶寬的消耗算法

思路:添加防盜鏈瀏覽器

解決:經過防盜鏈來進行處理服務器

           1.經過Referer來進行判斷【不推薦 referer能夠進行僞造 僅提升訪問門檻】函數

              ····安裝nginx模塊 ngx_http_referer_module 進行配置以達到效果加密

            2.經過sgin(簽名)進行驗證【推薦 簽名算法驗證 難以破解】code

              ····安裝nginx模塊 accesskey模塊圖片

#開啓accesskey 
accesskey             on 
#設置加密模式md5和sha-1 二選一
accesskey_hashmethod  md5|sha-1;
#設置加密參數 可自行定義 
accesskey_arg         "sgin";
#設置加密算法 按照博主的算法 應該是這樣 md5(check_sign.客戶端IP)
accesskey_signature   "check_sign$remote_addr";

#搞定以後重啓一下nginx

        ····接下來在php進行加密 若是不帶加密參數進行驗證 會返回403md5

<?php 
  //假設當前目錄下存在logo.png


  // 在瀏覽器中預覽 發現返回403
  echo  "<img src='./logo.png'>";
  
 
  // 再次在瀏覽器中預覽 能夠正常顯示 (若是你選擇的是sha-1加密則使用sha1函數進行加密)
  $sign = md5('sign'.$_SERVER['REMOTE_ADDR']);
  echo "<img src='./logo.png?sign={$sign}'>";
  

   // 須要注意 php和nginx的加密必定要相同 不然沒法驗證成功
?>
相關文章
相關標籤/搜索