搜尋
首頁運維NginxNginx怎麼搭建文件防盜鏈服務

前言

大家都知道現在很多網站下載資料都是要收費的,無論是積分還是金幣,想免費只能說很少很少了,那麼這些網站是如何做到資源防盜鏈的呢?

這裡推薦一款比較容易上手的神器,nginx本身提供了secure_link來完成防盜鏈功能,可以為伺服器檔案連結新增時間戳記和校驗碼,從而保護伺服器檔案不被任意下載盜用。

時序圖

Nginx怎麼搭建文件防盜鏈服務

nginx設定

如何安裝nginx這裡不再贅述,安裝的時候記得開啟ngx_http_secure_link_module即可。

./configure --with-http_secure_link_module #编译nginx时加入

安裝完成偵測:

nginx -v

如果出現以下說明設定成功:

configure arguments: --with-http_secure_link_module --prefix=/usr/local /nginx --with-http_stub_status_module

實例配置

server {
   listen    80;
   server_name download.52itstyle.com;
   charset utf-8;
   location / {
     #这里配置了2个参数一个是md5,一个是expires
     secure_link $arg_md5,$arg_expires;
     #md5的哈希格式为 secret+url+expires,expires为时间戳单位s,url为请求地址
     secure_link_md5 52itstyle$uri$arg_e;
     #这里我们的md5是我们按照secure_link_md5的方式计算的哈希,secure_link会比对它计算的哈希值是否与我们的md5参数一致
     if ($secure_link = "") {
       #资源不存在或哈希比对失败
       return 402;
     }
     if ($secure_link = "0") {
       #失效超时
       return 405;
     }
     #重命名文件名
     add_header content-disposition "attachment;filename=$arg_f";
     alias /data/site/down.52itstyle.com/;
   }
   error_page  500 502 503 504 /50x.html;
   error_page  402 405 /40x.html;
   location = /50x.html {
     root  html;
   }
   location = /40x.html {
     root  html;
   }
}

參數詳解

#secure_link

語法: secure_link expression;

預設值: 無

設定段:http, server, location

expression由校驗值和過期時間組成,其中校驗值將會與secure_link_md5中的指定參數的md5雜湊值進行比較。

如果兩個值不一致,$secure_link變數的值是空;如果兩個值一致,則進行過期檢查;如果過期了,則$secure_link變數值為0;如果沒過期,則為1 。

如果連結是有時效性的,那麼過期時間用時間戳進行設置,在md5哈希值後面聲明,用逗號隔開。如果沒有設定過期時間,則連結永久有效。

secure_link_md5

語法: secure_link_md5 expression;

預設值: 無

設定段:http, server, location

expression指定計算md5雜湊值的參數,該md5值將會和url中傳遞的md5值進行比較校驗。 expression一般包含uri(如demo.com/s/link uri則為/s/link)以及加密金鑰secret,如果該連結具有時效,則expression需包含$secure_link_expires,expression還可以加入客戶端訊息,如訪問ip,瀏覽器版本資訊等。

java後端設定

案例,僅供參考:

import org.apache.commons.codec.binary.base64;
import org.apache.commons.codec.digest.digestutils;
/**
 * 生成加密連接
 */
public class securelink {
  private static string site = "https://down.52itstyle.com/";
  private static string secret = "52itstyle";
  public static string createlink(string path,string filename){
    string time = string.valueof((system.currenttimemillis() / 1000) + 300); // 5分钟有效
    string md5 = base64.encodebase64urlsafestring(digestutils.md5(secret + path + time));
    string url = site + path + "?md5=" + md5 + "&expires=" + time + "&f="+filename;
    return url;
  }
  public static void main(string[] args) {
    //https://down.52itstyle.com/2018101025689452.pdf?md5=fndyyfzcooi9q8sh1ffkxg&expires=1539847995&f=分布式秒杀架构.pdf
    system.out.println(createlink("2018101025689452.pdf","分布式秒杀架构.pdf"));
  }
}

以上是Nginx怎麼搭建文件防盜鏈服務的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:亿速云。如有侵權,請聯絡admin@php.cn刪除
終極攤牌:nginx vs. apache終極攤牌:nginx vs. apacheApr 18, 2025 am 12:02 AM

NGINX適合處理高並發請求,Apache適合需要復雜配置和功能擴展的場景。 1.NGINX採用事件驅動、非阻塞架構,適用於高並發環境。 2.Apache採用進程或線程模型,提供豐富的模塊生態系統,適合複雜配置需求。

nginx行動:示例和現實應用程序nginx行動:示例和現實應用程序Apr 17, 2025 am 12:18 AM

NGINX可用於提升網站性能、安全性和可擴展性。 1)作為反向代理和負載均衡器,NGINX可優化後端服務和分擔流量。 2)通過事件驅動和異步架構,NGINX高效處理高並發連接。 3)配置文件允許靈活定義規則,如靜態文件服務和負載均衡。 4)優化建議包括啟用Gzip壓縮、使用緩存和調整worker進程。

NGINX單元:支持不同的編程語言NGINX單元:支持不同的編程語言Apr 16, 2025 am 12:15 AM

NGINXUnit支持多種編程語言,通過模塊化設計實現。 1.加載語言模塊:根據配置文件加載相應模塊。 2.應用啟動:調用語言運行時執行應用代碼。 3.請求處理:將請求轉發給應用實例。 4.響應返回:將處理後的響應返回給客戶端。

在Nginx和Apache之間進行選擇:適合您的需求在Nginx和Apache之間進行選擇:適合您的需求Apr 15, 2025 am 12:04 AM

NGINX和Apache各有優劣,適合不同場景。 1.NGINX適合高並發和低資源消耗場景。 2.Apache適合需要復雜配置和豐富模塊的場景。通過比較它們的核心特性、性能差異和最佳實踐,可以幫助你選擇最適合需求的服務器軟件。

nginx怎麼啟動nginx怎麼啟動Apr 14, 2025 pm 01:06 PM

問題:如何啟動 Nginx?答案:安裝 Nginx啟動 Nginx驗證 Nginx 是否已啟動探索其他啟動選項自動啟動 Nginx

怎麼查看nginx是否啟動怎麼查看nginx是否啟動Apr 14, 2025 pm 01:03 PM

確認 Nginx 是否啟動的方法:1. 使用命令行:systemctl status nginx(Linux/Unix)、netstat -ano | findstr 80(Windows);2. 檢查端口 80 是否開放;3. 查看系統日誌中 Nginx 啟動消息;4. 使用第三方工具,如 Nagios、Zabbix、Icinga。

nginx怎麼關閉nginx怎麼關閉Apr 14, 2025 pm 01:00 PM

要關閉 Nginx 服務,請按以下步驟操作:確定安裝類型:Red Hat/CentOS(systemctl status nginx)或 Debian/Ubuntu(service nginx status)停止服務:Red Hat/CentOS(systemctl stop nginx)或 Debian/Ubuntu(service nginx stop)禁用自動啟動(可選):Red Hat/CentOS(systemctl disable nginx)或 Debian/Ubuntu(syst

nginx在windows中怎麼配置nginx在windows中怎麼配置Apr 14, 2025 pm 12:57 PM

如何在 Windows 中配置 Nginx?安裝 Nginx 並創建虛擬主機配置。修改主配置文件並包含虛擬主機配置。啟動或重新加載 Nginx。測試配置並查看網站。選擇性啟用 SSL 並配置 SSL 證書。選擇性設置防火牆允許 80 和 443 端口流量。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具