国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

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

這篇具有很好參考價值的文章主要介紹了Nginx 禁止IP訪問 只允許域名訪問,以及Nginx防盜鏈設(shè)置。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

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

1.1 背景及用途

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

1.2 設(shè)置方式

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

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

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

在nginx.conf文件修改如下:

server {
    listen 80 default;
    return 403;
}

這里是在接收到ip訪問或非指定域名訪問時會返回403錯誤。

也可以把這些流量收集起來,導(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)界以最小成本獲取最高利益的一個常用手段。比如筆者最近考慮買房,在貝殼網(wǎng)上有房源的真是戶型圖以及VR。某些房產(chǎn)中介直接會盜用貝殼網(wǎng)上的真實戶型圖來騙取點擊。因此,對于任何一個大型網(wǎng)站而言,做好防盜措施,避免自身利益受損是至關(guān)重要的。Nginx 在代理這類靜態(tài)資源(圖片、視頻、文章等)時,可以通過配置實現(xiàn)防盜連的功能。

2.2 如何防盜鏈?

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

2.3 refer模塊防盜

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

一個簡單的 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 頭部的請求訪問
  • blocked:referer 這個字段,但是其值被防火墻或者是代理給刪除了
  • server_names: 若 referer 中的站點域名和 server_names 中的某個域名匹配,則允許訪問
  • 任意字符或者正則表達式

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

2.4 secure_link模塊防盜

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

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

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

???????通過配置 secure_link, secure_link_md5 指令,可實現(xiàn)對鏈接進行權(quán)限以及過期檢查判斷的功能。

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

  • 空字符串: 驗證不通過
  • 0: URL 過期
  • 1: 驗證通過

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)換成時間戳為1681894800
echo -n '1681894800/test.png127.0.0.1 secret' | \
    openssl md5 -binary | openssl base64 | tr +/ -_ | tr -d =

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

secure_link $arg_md5,$arg_expires;

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

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

對于 Nginx 中的校驗配置示例如下:

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

2.5 小結(jié)

???????一般的 Nginx 防盜鏈手段都是通過 referer 字段來判斷請求的來源地,由此去判定請求是否合法。但是該字段容易偽造,所以很少用該方法實現(xiàn)防盜功能。而Nginx 的 secure_link 模塊主要是使用 hash 算法加密方式,一般用于圖片、視頻下載,生成下載 URL,安全性高。此外,我們也可以使用一些第三方的模塊增強 Nginx 的防盜鏈功能,比如常用的第三放模塊 ngx_http_accesskey_module 可用于實現(xiàn)文件下載的防盜功能。文章來源地址http://www.zghlxwxcb.cn/news/detail-516156.html

到了這里,關(guān)于Nginx 禁止IP訪問 只允許域名訪問,以及Nginx防盜鏈設(shè)置的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • windows防火墻出站規(guī)則只允許訪問指定域名ip,其他出站ip全部阻止的方法

    windows防火墻出站規(guī)則只允許訪問指定域名ip,其他出站ip全部阻止的方法

    需求背景: 公司內(nèi)網(wǎng)的windows服務(wù)器因業(yè)務(wù)需要只需訪問互聯(lián)網(wǎng)指定的域名ip,其他的因出于系統(tǒng)網(wǎng)絡(luò)安全考慮需要屏蔽阻止業(yè)務(wù)無關(guān)的其他所有域名和ip的訪問。 實現(xiàn)方案: 在windows防火墻中進行設(shè)置,如果安裝其他網(wǎng)絡(luò)防火墻會存在安全隱患,公司不允許安裝私人或非法的

    2023年04月08日
    瀏覽(31)
  • Nginx配置只允許部分ip訪問

    Nginx配置只允許部分ip訪問

    ? ? ? ?前幾天解答一個需求,公司的服務(wù)器映射的外網(wǎng)ip被惡意的綁定了域名了,導(dǎo)致人家可以通過域名直接訪問我們的測試服務(wù),運營商覺得我們綁定未備案域名,聯(lián)系我們讓我們整改,簡單的處理就是只允許通過外網(wǎng)ip訪問,過濾掉域名訪問方式。 ? ? ? 簡單處理如下:

    2024年02月11日
    瀏覽(29)
  • Nginx配置禁止特定IP和端口訪問

    Nginx是一款常用的高性能Web服務(wù)器和反向代理服務(wù)器。它通過靈活的配置文件能夠?qū)崿F(xiàn)各種功能,包括限制特定IP地址和端口的訪問。本文將詳細介紹如何使用Nginx配置禁止特定IP和端口的訪問。 首先,確保你已經(jīng)正確安裝和配置了Nginx。以下是一個簡單的Nginx配置文件示例:

    2024年02月02日
    瀏覽(26)
  • Nginx禁止某個IP或者IP段訪問的方法

    當Nginx代理了很多網(wǎng)站時,我們想讓一部分人能訪問,一部分人訪問不了;那么我們可以來到每個網(wǎng)站的Nginx代理配置文件,針對某個網(wǎng)站單獨設(shè)置:禁止或允許IP或IP段訪問網(wǎng)站。 例:配置文件 如果想禁止某個準確的IP,deny 后直接加IP(deny xxx.xxx.xxx.xxx;) 即可。 上面的配置

    2024年02月11日
    瀏覽(53)
  • 設(shè)置Redis允許使用IP訪問

    問題: 可以使用127.0.0.1配置并訪問使用Redis,但是換成IP地址就無法訪問 解決: 打開安裝目錄下 redis.windows.config 文件(linux對應(yīng)redis.conf文件)將 NETWORK 下 \\\" bind 127.0.0.1 \\\" 注釋掉或修改為 \\\" bind 0.0.0.0 \\\" (使其他主機可以連接),并將 \\\" protected-modehou yes \\\" 改為 \\\" protected-mode no \\\"(

    2024年02月10日
    瀏覽(25)
  • centos設(shè)置允許訪問的ip

    參考: https://www.lmlphp.com/user/64466/article/item/1159141/ https://blog.csdn.net/yangjiehuan/article/details/9253855 https://blog.csdn.net/qq_36746838/article/details/132298722 https://www.cnblogs.com/zhongguiyao/p/14082004.html 對服務(wù)器ssh登錄限制: vim /etc/ssh/sshd_config 在尾部加一行(允許所有ip登錄) AllowUsers root@* 或者(

    2024年02月07日
    瀏覽(21)
  • 用 Nginx 禁止國外 IP 訪問我的網(wǎng)站...

    用 Nginx 禁止國外 IP 訪問我的網(wǎng)站...

    先來說說為啥要寫這篇文章,之前看了下 Nginx 的訪問日志,發(fā)現(xiàn)每天有好多國外的 IP 地址來訪問我的網(wǎng)站,并且訪問的內(nèi)容基本上都是惡意的。因此我決定禁止國外 IP 來訪問我的網(wǎng)站。 想要實現(xiàn)這個功能有很多方法,下面我就來介紹基于 Nginx 的 ngx_http_geoip2 模塊來禁止國外

    2024年02月13日
    瀏覽(25)
  • Nginx或Apache禁止某些IP段訪問的兩種方法

    修改Nginx配置文件nginx.conf Nginx配置訪問IP可以修改nginx.conf文件,只需要在server中添加allow和deny的IP即可,如下: server { ? ? listen ? ? ? 80; ? ? server_name ?localhost; ? ? allow all; ? ? deny 123.123.123.123; ? ? error_page ? 500 502 503 504 ?/50x.html; } ? 注意!上面的配置中allow必須在deny的前

    2024年02月03日
    瀏覽(43)
  • window10設(shè)置防火墻只允許某些ip訪問

    window10設(shè)置防火墻只允許某些ip訪問

    工作中進行測試,需要嵌入式設(shè)備通過網(wǎng)線直連電腦進行TCP通訊,但在使用過程中發(fā)現(xiàn)總是連接失敗,但電腦ping設(shè)備的IP是可以ping通的,而嵌入式設(shè)備不能操作一些像ping的網(wǎng)絡(luò)測試指令,就很無奈。 后來通過設(shè)置防火墻,發(fā)現(xiàn)是防火墻的原因。 可以通過設(shè)置入站規(guī)則來解決

    2024年02月16日
    瀏覽(23)
  • nginx 前后的分離 (ip/域名)訪問 負載均衡

    nginx 前后的分離 (ip/域名)訪問 負載均衡

    首先前端隨便訪問后端的一個端口,后端監(jiān)聽這個端口進行服務(wù)轉(zhuǎn)發(fā)。 比如:8888 然后nginx在我們的服務(wù)器上部署兩個后端 這里我用docker部署了兩個 當然你也可以在兩個服務(wù)器上面部署兩個后端,只要在nginx配置代理的時候修改一下ip就可以了。 nginx配置

    2024年04月29日
    瀏覽(31)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包