Heim  >  Artikel  >  Betrieb und Instandhaltung  >  So erstellen Sie einen Datei-Anti-Leeching-Dienst in Nginx

So erstellen Sie einen Datei-Anti-Leeching-Dienst in Nginx

WBOY
WBOYnach vorne
2023-05-11 23:58:201225Durchsuche

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

So erstellen Sie einen Datei-Anti-Leeching-Dienst in Nginx

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_md5

Syntax: secure_link_md5 expression;

Standardwert: Keine

#🎜 🎜 # Konfigurationsabschnitt: http, server, location

expression 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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen