亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Nginx禁止IP訪問只允許域名訪問及防盜鏈設(shè)置

 更新時(shí)間:2023年10月18日 09:57:12   作者:psonh  
我們?cè)谑褂玫臅r(shí)候會(huì)遇到很多的惡意IP攻擊,這個(gè)時(shí)候就要用到Nginx 禁止IP訪問了,本文主要介紹了Nginx禁止IP訪問只允許域名訪問及Nginx防盜鏈設(shè)置,具有一定的參考價(jià)值,感興趣的可以了解一下

一、Nginx 禁止IP訪問 只允許域名訪問

1.1 背景及用途

我們?cè)谑褂玫臅r(shí)候會(huì)遇到很多的惡意IP攻擊,這個(gè)時(shí)候就要用到Nginx 禁止IP訪問了。今天要在Nginx上設(shè)置禁止通過IP訪問服務(wù)器,只能通過域名訪問,這樣做是為了避免別人把未備案的域名解析到自己的服務(wù)器IP而導(dǎo)致服務(wù)器被斷網(wǎng)。

1.2 設(shè)置方式

下面我們就先看看Nginx的默認(rèn)虛擬主機(jī)在用戶通過IP訪問,或者通過未設(shè)置的域名訪問(比如有人把他自己的域名指向了你的ip)的時(shí) 候生效最關(guān)鍵的一點(diǎn)是,在server的設(shè)置里面添加這一行:

listen 80 default;后面的default參數(shù)表示這個(gè)是默認(rèn)虛擬主機(jī)。
Nginx 禁止IP訪問這個(gè)設(shè)置非常有用。

比如別人通過ip或者未知域名訪問你的網(wǎng)站的時(shí)候,你希望禁止顯示任何有效內(nèi)容,可以給他返回500或者403.目前國內(nèi)很多機(jī)房都要求網(wǎng)站主關(guān)閉空主機(jī)頭,防止未備案的域名指向過來造成麻煩。就可以這樣設(shè)置:

在nginx.conf文件修改如下:

server {
    listen 80 default;
    return 403;
}

這里是在接收到ip訪問或非指定域名訪問時(shí)會(huì)返回403錯(cuò)誤。

也可以把這些流量收集起來,導(dǎo)入到自己的網(wǎng)站,只要做以下跳轉(zhuǎn)設(shè)置就可以:

server { 
  listen 80 default; 
  rewrite ^(.*) http://www.youdomain.com permanent; 
}

二、Nginx防盜鏈設(shè)置

2.1 背景及用途

盜鏈在如今的互聯(lián)網(wǎng)世界無處不在,盜圖,盜視頻、盜文章等等,都是通過獲取正規(guī)網(wǎng)站的圖片、視頻、文章等的 url 地址,直接放到自己網(wǎng)站上使用而未經(jīng)授權(quán)。 盜資源是黑產(chǎn)界以最小成本獲取最高利益的一個(gè)常用手段。比如筆者最近考慮買房,在貝殼網(wǎng)上有房源的真是戶型圖以及VR。某些房產(chǎn)中介直接會(huì)盜用貝殼網(wǎng)上的真實(shí)戶型圖來騙取點(diǎn)擊。因此,對(duì)于任何一個(gè)大型網(wǎng)站而言,做好防盜措施,避免自身利益受損是至關(guān)重要的。Nginx 在代理這類靜態(tài)資源(圖片、視頻、文章等)時(shí),可以通過配置實(shí)現(xiàn)防盜連的功能。

2.2 如何防盜鏈?

前面介紹到,盜鏈?zhǔn)侵苯邮褂谜?guī)網(wǎng)站保存圖片、視頻等的 URL 以獲取相應(yīng)的資源。最簡(jiǎn)單的防盜想法就是根據(jù)客戶端請(qǐng)求資源時(shí)所攜帶的一些關(guān)鍵信息來驗(yàn)證請(qǐng)求的合法性,比如客戶端 IP、請(qǐng)求 URL 中攜帶的 referer,如果不合法則直接拒絕請(qǐng)求。此外,由于這些基礎(chǔ)信息都可以偽造,因此這樣的基礎(chǔ)手段也不一定安全。此外,還有登錄認(rèn)證、使用 cookie 等其他防盜連手段。另外,針對(duì)特定場(chǎng)景,比如流媒體直播中還有更為高級(jí)的防盜手段包括時(shí)間戳防盜鏈、swf 防盜鏈、回源鑒權(quán)防盜鏈等。

2.3 refer模塊防盜

Nginx 用于實(shí)現(xiàn)防盜鏈功能的模塊為 refer 模塊,其依據(jù)的原理是: 如果網(wǎng)站盜用了你的圖片,那么用戶在點(diǎn)擊或者查看這個(gè)盜鏈內(nèi)容時(shí),發(fā)送 http 請(qǐng)求的頭部中的 referer 字段將為該盜版網(wǎng)站的 url。這樣我們通過獲取這個(gè)頭部信息,知道 http 發(fā)起請(qǐng)求的頁面,然后判斷這個(gè)地址是否是我們的合法頁面,不是則判斷為盜鏈。‘

一個(gè)簡(jiǎn)單的 Nginx 防盜鏈配置如下:

server {
        listen   80;
        server_name  youdomain.com;

        valid_referers none blocked *.youdomain.org www.youdomain.com/nginx server_names ~\.baidu\.;
        if ($invalid_referer) {
            return 499;
        }
        location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
}
  • none: 允許缺失 referer 頭部的請(qǐng)求訪問
  • blocked: 有 referer 這個(gè)字段,但是其值被防火墻或者是代理給刪除了
  • server_names: 若 referer 中的站點(diǎn)域名和 server_names 中的某個(gè)域名匹配,則允許訪問
  • 任意字符或者正則表達(dá)式

Nginx 會(huì)通過查看 referer 字段和 valid_referers 后面的 referer 列表進(jìn)行匹配,如果匹配到了就將內(nèi)置的變量$invalid_referer值設(shè)置為0,否則設(shè)置該值為1

2.4 secure_link模塊防盜

前面這種簡(jiǎn)單檢查 referer 頭部值的防盜鏈方法過于脆弱,盜用者很容易通過偽造 referer 的值輕而易舉跳過防盜措施。在 Nginx 中有一種更為高級(jí)的防盜方式,即基于 secure_link 模塊,該模塊能夠檢查請(qǐng)求鏈接的權(quán)限以及是否過期,多用于下載服務(wù)器防盜鏈。這個(gè)模塊默認(rèn)未編譯進(jìn) Nginx,需要在源碼編譯時(shí)候使用 --with-secure_link_module 添加。

該模塊的通過驗(yàn)證 URL 中的哈希值的方式防盜鏈。它的防盜過程如下:

  • 由服務(wù)器或者 Nginx 生成安全的加密后的 URL, 返回給客戶端;
  • 客戶端使用安全的 URL 訪問 Nginx,獲取圖片等資源,由 Nginx 的 secure_link 變量判斷是否驗(yàn)證通過;

通過配置 secure_linksecure_link_md5 指令,可實(shí)現(xiàn)對(duì)鏈接進(jìn)行權(quán)限以及過期檢查判斷的功能。

和 referer 模塊中的 $invalid_referer 變量一樣,secure_link 模塊也是通過內(nèi)置變量 KaTeX parse error: Expected ‘EOF’, got ‘判’ at position 14: secure_link 判斷驗(yàn)證是否通過。secure_link 的值有如下三種情況:

  • 空字符串: 驗(yàn)證不通過
  • 0: URL 過期
  • 1: 驗(yàn)證通過

用 secure_link_md5 指令生成生成合法的 URL 。例如:

secure_link_md5 "$secure_link_expires$uri$remote_addr secret";

如果 Nginx 中secure_link_md5 是上述配置,那么生成合法 url 的命令如下:

# 2023-04-19 17:00:00 轉(zhuǎn)換成時(shí)間戳為1681894800
echo -n '1681894800/test.png127.0.0.1 secret' | \
    openssl md5 -binary | openssl base64 | tr +/ -_ | tr -d =

通過上述命令,我們得到了一個(gè) md5 值:cPnjBG9bAZvY_jbPOj13mA,這個(gè)非常重要。接下來,構(gòu)造合的 URL 和指令 secure_link 相關(guān)。如果 secure_link 指令的配置如下:

secure_link $arg_md5,$arg_expires;

那么我們的請(qǐng)求的 url 中必須帶上 md5 和 expires 參數(shù),例如:

http://192.168.1.10:9008/test.png?md5=cPnjBG9bAZvY_jbPOj13mA&expires=1681894800?

對(duì)于 Nginx 中的校驗(yàn)配置示例如下:

location ~* .(gif|jpg|png|swf|flv|mp4)$  {
    secure_link $arg_md5,$arg_expires;
    secure_link_md5 "$secure_link_expires$uri$remote_addr secret";
?
    # 空字符串,校驗(yàn)不通過
    if ($secure_link = "") {
        return 403;
    }
    # 時(shí)間過期
    if ($secure_link = "0") {
        return 410 "URL過期,請(qǐng)重新生成";
    }
    root /root/test;
}

2.5 小結(jié)

一般的 Nginx 防盜鏈?zhǔn)侄味际峭ㄟ^ referer 字段來判斷請(qǐng)求的來源地,由此去判定請(qǐng)求是否合法。但是該字段容易偽造,所以很少用該方法實(shí)現(xiàn)防盜功能。而Nginx 的 secure_link 模塊主要是使用 hash 算法加密方式,一般用于圖片、視頻下載,生成下載 URL,安全性高。此外,我們也可以使用一些第三方的模塊增強(qiáng) Nginx 的防盜鏈功能,比如常用的第三放模塊 ngx_http_accesskey_module 可用于實(shí)現(xiàn)文件下載的防盜功能。

到此這篇關(guān)于Nginx禁止IP訪問只允許域名訪問及Nginx防盜鏈設(shè)置的文章就介紹到這了,更多相關(guān)Nginx禁止IP訪問及Nginx防盜鏈內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Nginx中運(yùn)行PHP框架Laravel的配置文件分享

    Nginx中運(yùn)行PHP框架Laravel的配置文件分享

    這篇文章主要介紹了Nginx中運(yùn)行PHP框架Laravel的配置文件分享,本文直接給出配置示例,需要的朋友可以參考下
    2015-06-06
  • 使用Nginx Ingress 優(yōu)雅顯示錯(cuò)誤頁面

    使用Nginx Ingress 優(yōu)雅顯示錯(cuò)誤頁面

    這篇文章主要為大家介紹了使用Nginx Ingress 優(yōu)雅顯示錯(cuò)誤頁面實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • Nginx配置React項(xiàng)目Url后直接輸入路由路徑時(shí)報(bào)404問題的解決

    Nginx配置React項(xiàng)目Url后直接輸入路由路徑時(shí)報(bào)404問題的解決

    這篇文章主要給大家介紹了關(guān)于Nginx配置React項(xiàng)目Url后面直接輸入路由路徑時(shí)報(bào)404問題的解決方法,文中通過示例代碼將解決的方法介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11
  • nginx部署前端項(xiàng)目后刷新瀏覽器報(bào)錯(cuò)404問題解決

    nginx部署前端項(xiàng)目后刷新瀏覽器報(bào)錯(cuò)404問題解決

    現(xiàn)在前端頁面部署正常訪問,但是刷新的時(shí)候出現(xiàn)了404,所以下面給整理下,這篇文章主要給大家介紹了關(guān)于nginx部署前端項(xiàng)目后刷新瀏覽器報(bào)錯(cuò)404問題的解決辦法,需要的朋友可以參考下
    2023-11-11
  • linux下nginx負(fù)載均衡搭建的方法步驟

    linux下nginx負(fù)載均衡搭建的方法步驟

    本篇文章主要介紹了linux下nginx負(fù)載均衡搭建的方法步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-04-04
  • nginx開啟gzip壓縮的完整步驟記錄

    nginx開啟gzip壓縮的完整步驟記錄

    Nginx開啟Gzip壓縮功能,可以使網(wǎng)站的css、js 、xml、html文件在傳輸時(shí)進(jìn)行壓縮,提高訪問速度,進(jìn)而優(yōu)化Nginx性能,下面這篇文章主要給大家介紹了關(guān)于nginx開啟gzip壓縮的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • nginx中(13: Permission denied)權(quán)限問題的解決辦法

    nginx中(13: Permission denied)權(quán)限問題的解決辦法

    "nginx 13: Permission denied" 錯(cuò)誤通常表示nginx進(jìn)程沒有足夠的權(quán)限來訪問特定的文件或目錄,本文就來介紹一下解決方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • Nginx中proxy_pass的斜杠的兩種方式

    Nginx中proxy_pass的斜杠的兩種方式

    Nginx的官方文檔將proxy_pass分為不帶URI和帶URI兩種類型,本文就來介紹Nginx中proxy_pass的斜杠的兩種方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-10-10
  • 利用Nginx實(shí)現(xiàn)反向代理Node.js的方法詳解

    利用Nginx實(shí)現(xiàn)反向代理Node.js的方法詳解

    這篇文章主要給大家介紹了關(guān)于利用Nginx實(shí)現(xiàn)反向代理Node.js的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08
  • 編寫Go程序?qū)ginx服務(wù)器進(jìn)行性能測(cè)試的方法

    編寫Go程序?qū)ginx服務(wù)器進(jìn)行性能測(cè)試的方法

    這篇文章主要介紹了編寫Go程序?qū)ginx服務(wù)器進(jìn)行性能測(cè)試的方法,包括對(duì)其負(fù)載均衡和緩存等方面的測(cè)試,極力推薦!需要的朋友可以參考下
    2015-06-06

最新評(píng)論