Bagaimana untuk membina perkhidmatan anti-lintah fail dalam Nginx

WBOY
Lepaskan: 2023-05-11 23:58:20
ke hadapan
1160 orang telah melayarinya

Kata Pengantar

Semua orang tahu bahawa banyak laman web kini mengenakan bayaran untuk memuat turun maklumat, sama ada mata atau syiling emas Jika anda ingin membebaskannya, anda hanya boleh mengatakan bahawa ada sangat sedikit, jadi tapak web ini Bagaimana untuk mengelakkan pautan panas sumber?

Berikut ialah artifak yang agak mudah digunakan, nginx sendiri menyediakan secure_link untuk melengkapkan fungsi anti-leeching. Ia boleh menambah cap masa dan menyemak kod pada pautan fail pelayan, dengan itu melindungi fail pelayan daripada dimuat turun dan dicuri. .

Rajah masa

Bagaimana untuk membina perkhidmatan anti-lintah fail dalam Nginx

konfigurasi nginx

Cara memasang nginx tidak akan diterangkan di sini ia apabila memasang ngx_http_secure_link_module sudah memadai.

./configure --with-http_secure_link_module #编译nginx时加入
Salin selepas log masuk

Pengesanan selesai pemasangan:

nginx -v
Salin selepas log masuk

Jika arahan berikut muncul, konfigurasi berjaya:

konfigurasi argumen: --with-http_secure_link_module --prefix= /usr/local /nginx --with-http_stub_status_module

Konfigurasi instance

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;
   }
}
Salin selepas log masuk

Butiran parameter

secure_link

Sintaks: secure_link expression;

Nilai lalai: Tiada Ia terdiri daripada masa, di mana nilai semakan akan dibandingkan dengan nilai cincang md5 parameter yang ditentukan dalam secure_link_md5.

Jika kedua-dua nilai tidak konsisten, nilai pembolehubah $secure_link adalah kosong; pembolehubah secure_link ialah 0; jika ia belum tamat tempoh, ia adalah 1 .

Jika pautan sensitif masa, masa tamat tempoh ditetapkan dengan cap masa, diisytiharkan selepas nilai cincang md5, dipisahkan dengan koma. Jika tiada masa tamat ditetapkan, pautan itu sah selama-lamanya.

secure_link_md5

Sintaks: secure_link_md5 expression;Nilai lalai: Tiada

Bahagian konfigurasi: http, pelayan, lokasi

ungkapan menentukan parameter untuk mengira nilai cincang md5 Nilai md5 akan dibandingkan dan disahkan dengan nilai md5 yang dihantar dalam URL. Ungkapan secara amnya mengandungi uri (contohnya, demo.com/s/link uri ialah /s/link) dan rahsia kunci penyulitan Jika pautan itu sensitif masa, ungkapan perlu mengandungi $secure_link_expires juga boleh menambah maklumat pelanggan, seperti sebagai IP akses, maklumat versi penyemak imbas, dsb.

konfigurasi hujung belakang java

kes, untuk rujukan sahaja:

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"));
  }
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk membina perkhidmatan anti-lintah fail dalam Nginx. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!