nginx防盜鏈的詳細介紹

一、nginx防盜鏈設置白名單

1、為什麼要設置白名單?

對於某些需要公開訪問的資源,比如圖片等,我們是允許其他網站引用的,這時候我們就需要設置白名單,白名單內的域名可以訪問我們的資源,其他域名則不能訪問。

2、如何設置白名單?

    location / {
        valid_referers none blocked example.com *.example.com;
        if ($invalid_referer) {
            return 403;
        }
    }

代碼解釋:

第一行valid_referers none blocked example.com *.example.com;表示設置白名單,只允許example.com和其子域名引用,其他域名被視為無效referer。

第二行if ($invalid_referer) {return 403;}表示當referer為非法域名時拒絕訪問。

二、nginx防止ddos

1、什麼是ddos攻擊?

ddos(分散式拒絕服務攻擊)是指利用多台計算機對一個或多個目標發動攻擊,以至於伺服器壓力過大而導致服務拒絕。

2、如何防止ddos攻擊?

    http {
        limit_conn_zone $binary_remote_addr zone=perip:10m;
        limit_conn perip 10;
    }
    server {
        location / {
            limit_req zone=perip burst=20 nodelay;
        }
    }

代碼解釋:

第一段代碼設置了限制連接的數量,每個ip地址最多同時連接10次。

第二段代碼設置了限制請求的數量,每個ip地址每秒最多發送20個請求,超過的部分將被延遲到下一秒發送。

三、nginx防盜鏈原理

1、什麼是盜鏈?

盜鏈是指用戶在未經授權的情況下,將別人的圖片或網頁嵌入自己的網頁中,從而消耗伺服器帶寬和資源,導致資源浪費。

2、如何防止盜鏈?

在圖片等資源被訪問時,nginx會根據請求頭Referer來判斷請求是否合法,若合法則正常返回,否則返回403許可權不足錯誤。

我們可以通過設置白名單等方式來控制合法referer的範圍,從而有效防止盜鏈。

四、nginx防ddos

1、ddos攻擊的危害?

ddos攻擊可以導致網站癱瘓,用戶無法正常訪問,影響網站的正常運作。

2、如何防止ddos攻擊?

我們可以使用nginx防範ddos攻擊的方法:

(1)控制連接數量:設置最大連接數和最大請求數,防止客戶端對伺服器進行頻繁的連接和請求。

(2)設置超時時間:當客戶端連接持續過長時間時,伺服器將自動斷開連接,防止攻擊者長時間佔用伺服器資源。

(3)使用高效的緩存策略和請求處理方式:使用緩存技術可以減輕伺服器壓力,防止攻擊者對後端伺服器進行攻擊。

五、nginx防盜鏈配置

1、常用的防盜鏈配置方式

    location / {
        if ($http_referer !~ "^http://(www\.)?example.com") {
            return 403;
        }
    }

代碼解釋:

當請求頭Referer不是以http://www.example.com或http://example.com開頭時,返回403許可權不足錯誤。

六、nginx防盜鏈本地圖片載入失敗

1、如何防止本地圖片被盜鏈?

    location / {
        valid_referers none blocked example.com *.example.com;
        if ($invalid_referer) {
            root html/404;
            rewrite ^(.*)$ /404.jpg break;
        }
    }

代碼解釋:

當請求頭Referer非法時,將請求重定向到一個特定的路徑,顯示一張本地的圖片而不是被盜鏈的圖片。

七、nginx防盜鏈的作用

1、為什麼要防止盜鏈?

防止盜鏈可以減少伺服器資源浪費,提高服務安全性和穩定性,保障網站的正常運作。

2、怎麼做防盜鏈?

可以使用nginx的防盜鏈策略,設置白名單或者根據Referer來判斷請求是否合法,以此達到防盜鏈的目的。

八、nginx防盜鏈lua

1、什麼是lua?

Lua是一種輕量級腳本語言,被廣泛應用於遊戲開發、圖形應用、網路編程、嵌入式系統等領域。

2、如何使用lua實現防盜鏈?

    location / {
        access_by_lua_block {
            local referer = ngx.var.http_referer
            if referer ~= nil then
                if not ngx.re.match(referer, "^http[s]?://example.com") then
                    ngx.exit(ngx.HTTP_FORBIDDEN)
                end
            else
                ngx.exit(ngx.HTTP_FORBIDDEN)
            end
        }
    }

代碼解釋:

使用access_by_lua_block指令,在訪問每一個請求時都會執行lua代碼,根據Referer頭部來判斷請求是否合法。

九、nginx防盜鏈設置教程

1、如何設置白名單防盜鏈?

首先在nginx.conf中配置valid_referers指令,設置允許的域名,然後在location中添加判斷條件,當請求頭Referer非法時返回403錯誤。

    http {
        ...
        server {
            location / {
                valid_referers none blocked example.com *.example.com;
                if ($invalid_referer) {
                    return 403;
                }
                ...
            }
        }
        ...
    }

2、如何使用lua腳本來防盜鏈?

使用access_by_lua_block指令,在訪問每一個請求時都會執行lua代碼,判斷請求頭Referer是否合法,若不合法則返回403錯誤。

    http {
        ...
        server {
            location / {
                access_by_lua_block {
                    local referer = ngx.var.http_referer
                    if referer ~= nil then
                        if not ngx.re.match(referer, "^http[s]?://example.com") then
                            ngx.exit(ngx.HTTP_FORBIDDEN)
                        end
                    else
                        ngx.exit(ngx.HTTP_FORBIDDEN)
                    end
                }
                ...
            }
        }
        ...
    }

十、nginx防盜鏈設置方法

1、通過nginx.conf文件進行設置

在nginx.conf中配置valid_referers指令,設置允許的域名,然後在location中添加判斷條件,當請求頭Referer非法時返回403錯誤。

2、使用lua腳本進行防盜鏈設置

使用access_by_lua_block指令,在訪問每一個請求時都會執行lua代碼,判斷請求頭Referer是否合法,若不合法則返回403錯誤。

原創文章,作者:CHFVW,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/325241.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
CHFVW的頭像CHFVW
上一篇 2025-01-13 13:23
下一篇 2025-01-13 13:23

相關推薦

  • Java如何從Nginx下載文件

    本文將從以下幾個方面詳細介紹如何使用Java從Nginx下載文件。 一、準備工作 在Java中下載文件需要使用到Apache HttpClient庫,這個庫是一個基於Java的HT…

    編程 2025-04-27
  • 畫er圖網站詳細介紹

    一、網站介紹 畫er圖是一個畫流程圖的在線工具,提供多種流程圖、思維導圖的繪製模板,方便用戶根據自身需求量身定製。該網站提供免費試用,可同時多人在線協作編輯。 畫er圖通過簡單明了…

    編程 2025-04-25
  • nginx與apache應用開發詳解

    一、概述 nginx和apache都是常見的web伺服器。nginx是一個高性能的反向代理web伺服器,將負載均衡和緩存集成在了一起,可以動靜分離。apache是一個可擴展的web…

    編程 2025-04-25
  • NGINX許可權被拒絕問題

    NGINX是一款常見的Web伺服器軟體,但是在使用中常會遇到「permission denied」許可權被拒絕的問題。下文將從多個方面介紹本問題和解決方法。 一、系統許可權問題 1、檢…

    編程 2025-04-25
  • Burp Suite Mac詳細介紹

    Burp Suite Mac是一款全稱Burp Suite Professional for Mac OS X的Mac版網路攻擊測試工具,它能幫助安全測試人員對網路應用進行滲透測試…

    編程 2025-04-25
  • 關閉nginx命令詳解

    一、linux系統中關閉nginx命令 1、使用ps命令找到nginx的進程ID $ ps -ef | grep nginx 2、發送信號給nginx進程結束 $ kill -QU…

    編程 2025-04-25
  • 百度地圖拾取器詳細介紹

    一、百度地圖拾取器地址 百度地圖拾取器是一款可快速獲取百度地圖具體位置坐標的工具。其地址為:https://api.map.baidu.com/lbsapi/getpoint/in…

    編程 2025-04-25
  • HTML5語義化標籤的詳細介紹

    一、<header> 標籤 <header> 標籤用於定義文檔或節的頁眉。通常包含導航元素和標題元素。 <header> <h1>這…

    編程 2025-04-24
  • fseek函數的詳細介紹

    一、fseek在C語言中的意義 fseek函數是C語言中I/O庫中的一個函數,它用於在文件中移動讀寫位置指針。這個函數可以在文件中隨意移動讀寫位置指針從而實現對文件的隨機讀寫操作。…

    編程 2025-04-24
  • 深入淺出:理解nginx unknown directive

    一、概述 nginx是目前使用非常廣泛的Web伺服器之一,它可以運行在Linux、Windows等不同的操作系統平台上,支持高並發、高擴展性等特性。然而,在使用nginx時,有時候…

    編程 2025-04-24

發表回復

登錄後才能評論