Heim > Artikel > Betrieb und Instandhaltung > So erstellen Sie einen Datei-Anti-Leeching-Dienst in Nginx
Vorwort
Jeder weiß, dass viele Websites mittlerweile Gebühren für das Herunterladen von Informationen erheben, egal ob es sich um Punkte oder Goldmünzen handelt. Wenn Sie möchten, dass es kostenlos ist, können Sie das tun sagen Sie nur sehr wenig. Okay, wie verhindern diese Websites die Verknüpfung von Ressourcen?
Hier ist ein relativ einfach zu verwendendes Artefakt, das Secure_Link zur Vervollständigung der Anti-Leeching-Funktion bereitstellt. Es kann Zeitstempel und Prüfcodes zu Serverdatei-Links hinzufügen und so Serverdateien vor dem Herunterladen schützen willkürlich.
Zeitdiagramm
Nginx-Konfiguration
Anleitung Ich werde hier nicht auf Details zu Nginx eingehen. Denken Sie nur daran, ngx_http_secure_link_module bei der Installation zu aktivieren.
./configure --with-http_secure_link_module #编译nginx时加入
Erkennung des Installationsabschlusses:
nginx -v
Wenn die folgenden Anweisungen angezeigt werden, ist die Konfiguration erfolgreich:
Argumente konfigurieren: -- with-http_secure_link_module - -prefix=/usr/local/nginx --with-http_stub_status_module
Instanzkonfiguration
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; } }
# 🎜🎜#Parameter Detaillierte Erklärung
secure_link
Syntax: secure_link expression;Standardwert : Keine#🎜🎜 #Konfigurationsabschnitt: http, Server, Standort
Ausdruck besteht aus einem Prüfwert und einer Ablaufzeit, wobei der Prüfwert mit dem MD5-Hashwert des verglichen wird angegebener Parameter in secure_link_md5 .
Wenn die beiden Werte inkonsistent sind, ist der Wert der Variable $secure_link leer; wenn die beiden Werte konsistent sind, wird eine Ablaufprüfung durchgeführt; , der Wert der Variable $secure_link ist 0; wenn er nicht abgelaufen ist, ist er 1.
Wenn der Link zeitkritisch ist, wird die Ablaufzeit mit einem Zeitstempel festgelegt, der nach dem MD5-Hashwert deklariert und durch Kommas getrennt wird. Wenn keine Ablaufzeit festgelegt ist, ist der Link für immer gültig.
secure_link_md5Syntax: secure_link_md5 expression;
Standardwert: Keine
#🎜 🎜 # Konfigurationsabschnitt: http, server, locationexpression gibt die Parameter zur Berechnung des MD5-Hash-Werts an. Der MD5-Wert wird mit dem in der URL übergebenen MD5-Wert verglichen und überprüft. Ausdruck enthält im Allgemeinen eine URL (z. B. demo.com/s/link uri ist /s/link) und ein Verschlüsselungsschlüsselgeheimnis. Wenn der Link zeitkritisch ist, muss der Ausdruck auch Clientinformationen hinzufügen, z wie Zugriffs-IP, Browserversionsinformationen usw.Java-Backend-Konfiguration
Fall, nur als Referenz:
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")); } }
Das obige ist der detaillierte Inhalt vonSo erstellen Sie einen Datei-Anti-Leeching-Dienst in Nginx. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!