欧美亚洲_中文字幕在线看_免费污视频_99福利视频_狠狠干天天操_天天做天天干_老女人丨91丨九色_久久视频这里只有精品_超碰成人av_毛片成人_91欧美日韩_青青操影院_俺也去av_亚洲图片一区二区三区_午夜伦理在线观看_天天毛片_久久国产视频精品_成人久久精品人妻一区二区三区

您現(xiàn)在的位置:新疆網(wǎng)站建設(shè)-新疆網(wǎng)站制作-新疆二域設(shè)計>> 幫助中心>常見問題>> Nginx、Apache和IIS的防盜鏈設(shè)置

Nginx、Apache和IIS的防盜鏈設(shè)置

作者:管理員  來源:互聯(lián)網(wǎng)  發(fā)布時間:2025-09-18 09:58:14  點擊數(shù):0

盜鏈是指自己網(wǎng)站的圖片和視頻等資源,被其他網(wǎng)站引用,可能會導(dǎo)致自己網(wǎng)站的流量異常過高。本文講述Nginx、Apache和IIS的防盜鏈設(shè)置,用以下措施可以防止盜鏈問題。在防盜鏈情況下,直接發(fā)自己網(wǎng)站的圖片或視頻鏈接給客戶,客戶是無法直接訪問的,

只有正常訪問網(wǎng)站才能顯示相關(guān)圖片和視頻。請結(jié)合自己的業(yè)務(wù)需求使用。


Nginx 防盜鏈設(shè)置

Nginx 設(shè)置防盜鏈(Hotlink Protection)是一個非常常見且有用的功能,它可以防止其他網(wǎng)站直接鏈接到你的圖片、視頻、CSS、JS 等靜態(tài)資源,從而盜用你的服務(wù)器帶寬和流量。

Nginx 主要通過內(nèi)置的 ngx_http_referer_module 模塊來實現(xiàn)防盜鏈功能,其核心原理是檢查 HTTP 請求頭中的 Referer 字段。

以下是一些常見的配置場景,你通常需要在 server 或 location 塊中添加這些配置。


Nginx 防盜鏈場景一:基本防盜鏈(保護所有圖片格式),這個配置只允許來自你自己域名和空 Referer 的請求訪問圖片。

server {
    listen 80;
    server_name yourdomain.com;

    # 圖片緩存設(shè)置
    location ~* \.(jpg|jpeg|png|gif|webp|bmp)$ {
        # 定義有效的Referer來源
        valid_referers none blocked yourdomain.com *.yourdomain.com;

        # 如果Referer不在有效列表里,$invalid_referer為1,則執(zhí)行后面的操作
        if ($invalid_referer) {
            # 可以返回403錯誤
            return 403;
            # 或者重寫為一個防盜鏈提示圖片
            # rewrite ^ /path/to/anti-hotlink-image.jpg;
        }

        # 正常情況下的設(shè)置,如設(shè)置緩存時間、過期頭等
        expires 30d;
        add_header Cache-Control "public";
    }
}


Nginx 防盜鏈場景二:更靈活的設(shè)置(允許特定合作伙伴)

如果你希望允許一些友好的網(wǎng)站或搜索引擎(如 Google、Baidu)引用你的圖片,可以添加他們的域名。

location ~* \.(jpg|jpeg|png|gif|webp|bmp)$ {
    valid_referers none blocked
                 yourdomain.com *.yourdomain.com
                 google.com *.google.com
                 baidu.com *.baidu.com;

    if ($invalid_referer) {
        return 403;
    }

    # ... 其他配置 ...
}


Nginx 防盜鏈場景三:使用正則表達式匹配更復(fù)雜的域名

對于更復(fù)雜的匹配需求,可以使用正則表達式(以 ~ 開頭)。

location ~* \.(jpg|jpeg|png|gif|webp|bmp)$ {
    # 使用正則匹配所有以 "yourdomain.com" 結(jié)尾的域名
    valid_referers none blocked
                 ~\.yourdomain\.com$
                 ~\.google\.;

    if ($invalid_referer) {
        return 403;
    }

    # ... 其他配置 ...
}


Nginx 防盜鏈場景四:返回一張防盜鏈提示圖片

與其返回冷冰冰的 403 錯誤,不如重寫請求,返回一張有趣的“請勿盜鏈”提示圖片,體驗更好。

location ~* \.(jpg|jpeg|png|gif|webp|bmp)$ {
    valid_referers none blocked yourdomain.com *.yourdomain.com;

    if ($invalid_referer) {
        # 將所有盜鏈請求重寫到一個本地圖片
        rewrite ^ /images/anti-hotlink.jpg;
        break; # 重要:使用break防止重寫規(guī)則被再次處理
    }

    # ... 其他配置 ...
}

# 單獨為這個提示圖片設(shè)置一個location,避免它自己也被防盜鏈規(guī)則攔截
location = /images/anti-hotlink.jpg {
    expires 0; # 不緩存,每次都重新請求
    add_header Cache-Control "no-cache";
    # 確保這個圖片路徑確實存在
}


Nginx 防盜鏈更安全的方案:使用 Secure Link 模塊 (可選)

Referer 檢查的方式非常方便,但可以被偽造。對于安全性要求極高的場景,Nginx 提供了更強大的 ngx_http_secure_link_module 模塊。

這種方式會為每個資源鏈接生成一個帶過期時間和哈希校驗令牌的URL。如果令牌無效或鏈接已過期,訪問將被拒絕。

location /downloads/ {
    # 從URL中獲取secure_link和expires參數(shù)
    secure_link $arg_md5,$arg_expires;
    # 設(shè)置生成令牌時使用的密鑰,必須與生成鏈接的程序使用的密鑰一致
    secure_link_md5 "your_secret_key$secure_link_expires$uri";

    # 如果令牌無效
    if ($secure_link = "") {
        return 403; # 令牌錯誤或缺失
    }

    # 如果令牌有效但鏈接已過期
    if ($secure_link = "0") {
        return 410; # Gone,表示資源已過期
    }

    # ... 正常服務(wù)資源 ...
}

這種方式需要你在程序端(如 PHP、Python、Node.js)動態(tài)生成帶令牌的鏈接,配置相對復(fù)雜,但安全性極高。


配置完成后,一定要用 nginx -t 測試配置語法是否正確,然后用 nginx -s reload 重載配置。


測試方法:

在你自己的網(wǎng)站頁面里查看圖片,應(yīng)該正常顯示。

直接在瀏覽器地址欄輸入圖片鏈接,應(yīng)該正常顯示(因為 Referer 為空,none 允許)。

使用 curl 命令模擬盜鏈:curl -e "http://illegal-site.com" http://yourdomain.com/your-image.jpg,應(yīng)該返回 403 或你設(shè)置的提示圖片。

允許空 Referer:none 選項很重要。如果不加 none,用戶直接輸入鏈接、從郵件或即時通訊工具點擊鏈接時,Referer 也為空,也會被攔截,影響正常用戶體驗。

性能:正則表達式雖然強大,但比普通字符串匹配更耗性能,請謹慎使用。



Apache防盜鏈設(shè)置


規(guī)則文件.htaccess(手工創(chuàng)建.htaccess文件到站點根目錄)

<IfModule mod_rewrite.c>
RewriteEngine on 
RewriteCond %{HTTP_REFERER} !baidu.com [NC]
RewriteCond %{HTTP_REFERER} !google.com [NC]
RewriteCond %{HTTP_REFERER} !xxx.net [NC]
#RewriteCond %{HTTP_REFERER} ^$ [NC]
RewriteRule .*\.(jpg|jpeg|png|gif|bmp|swf|mp4|zip|rar|pdf|webp|js|css)$ /band.txt [NC,L]
</IfModule>

注:xxx.net是您自己的域名,band.txt是被盜鏈后的提示內(nèi)容文件


IIS防盜鏈設(shè)置


Windows2008、2012或更高系統(tǒng)下規(guī)則文件web.config (手工創(chuàng)建web.config文件到站點根目錄)

<?xml version="1.0" ?>
 <configuration>
  <system.webServer>  
   <rewrite>  
    <rules>   
      <rule name="rule1" stopProcessing="true">
        <match url="^.*\.(jpg|jpeg|png|gif|bmp|swf|mp4|zip|rar|pdf|webp|js|css)$" ignoreCase="true" />
        <conditions logicalGrouping="MatchAny" >
          <add input="{HTTP_REFERER}" pattern="您的域名.com(不用加www)" negate="true" />
          <!--<add input="{HTTP_REFERER}" pattern="^$" />-->
        </conditions>
       <action type="AbortRequest" />
      </rule>
   </rules>  
  </rewrite>  
 </system.webServer> 
</configuration>


關(guān)鍵字: 防盜鏈 Nginx Apache IIS

上一篇:mysql8.0的數(shù)據(jù)庫導(dǎo)入到mysql5.7
下一篇:IIS下強制https訪問的設(shè)置

版權(quán)所有 新疆二域信息技術(shù)有限公司 All Rights Reserved 地址:烏魯木齊市北京南路高新街217號盈科廣場B座615 備案號:新ICP備14003571號-6 新公網(wǎng)安備 65010402000050號