最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Nginx通過配置文件阻止海外ip訪問的方法步驟

 更新時間:2025年07月02日 10:08:54   作者:慕雪華年  
這篇文章主要介紹了Nginx通過配置文件阻止海外ip訪問的方法步驟,為防止海外IP刷評論,用戶通過Nginx配置屏蔽海外IP,利用APNIC數(shù)據(jù)提取國內(nèi)IP并生成deny規(guī)則,測試后確認(rèn)有效,可手動或定時更新配置以保持防護(hù),需要的朋友可以參考下

說明

因為最近發(fā)現(xiàn)有不少刷 評論的腳本,在nginx請求日志里面看了眼,都是海外的ip,反正我的博客也是全中文。所以干脆把海外ip禁止artalk評論。

/etc/nginx/nginx.conf中可以看到默認(rèn)的日志路徑,在里面能找到每一個轉(zhuǎn)發(fā)的請求和其源IP。其中artak新增評論的請求是/api/add路徑

access_log  /var/log/nginx/access.log  main;

解決

APNIC介紹

后文出現(xiàn)的網(wǎng)站是來自APNIC (Asia Pacific Network Information Center),其是IP地址管理機(jī)構(gòu)之一,負(fù)責(zé)亞洲、太平洋地區(qū)。

APNIC提供了每日更新的亞太地區(qū)IPv4,IPv6,AS號分配的信息表:
http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest
該文件的格式與具體內(nèi)容參見:
http://ftp.apnic.net/pub/apnic/stats/apnic/README.TXT

腳本獲取ip

可以下載所有海外ip列表并生成一個nginx配置,寫入/etc/nginx/blackip.conf

#!/bin/bash
rm -f legacy-apnic-latest black_`date +%F`.conf && wget http://ftp.apnic.net/apnic/stats/apnic/legacy-apnic-latest

awk -F '|' '{if(NR>2)printf("%s %s/%d%s\n","deny",$4,24,";")}' legacy-apnic-latest > black_`date +%F`.conf && \
rm -f /etc/nginx/blackip.conf && \
ln -s $PWD/black_`date +%F`.conf /etc/nginx/blackip.conf

腳本執(zhí)行后的效果如下

[root@bt-7274:/etc/nginx]# ll
total 88
lrwxrwxrwx 1 root root   34 Dec  9 16:03 blackip.conf -> /root/docker/black_2023-12-09.conf

文件內(nèi)容如下

[root@bt-7274:/etc/nginx/conf.d]# cat ../blackip.conf
deny 128.134.0.0/24;
deny 128.184.0.0/24;
deny 128.250.0.0/24;
deny 129.60.0.0/24;
deny 129.78.0.0/24;
...后面的省略了

nginx屏蔽海外ip

你可以將這個blackip.conf/etc/nginx/nginx.conf中的http模塊里面include,這樣會阻止當(dāng)前服務(wù)器所有反代的海外的請求。

include /etc/nginx/blackip.conf;

還可以在單個配置文件的location里面引用

    location / {
        proxy_redirect off; # artalk的nginx配置中必須有這個
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_set_header Upgrade-Insecure-Requests 1;
        proxy_set_header X-Forwarded-Proto https;

        include /etc/nginx/blackip.conf; # 引用配置

        proxy_pass http://127.0.0.1:14722;
  }

修改后重啟nginx,沒有報錯就是ok了

systemctl restart nginx

用海外的服務(wù)器試試能不能請求artalk,用Artalk這個管理員登錄頁面來進(jìn)行測試。

國內(nèi)服務(wù)器請求結(jié)果如下,和瀏覽器打開的結(jié)果基本是一樣(管理員登錄界面)

[root@bt-7274:/etc/nginx/conf.d]# curl https://artk.musnow.top/sidebar/#/login
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Artalk Sidebar</title>
    <script type="module" crossorigin src="./assets/index-5a0b3a93.js"></script>
    <link rel="stylesheet" href="./assets/index-84fdcf98.css" rel="external nofollow"  rel="external nofollow"  rel="external nofollow" >
  </head>
  <body>
    <div id="app"></div>

  </body>
</html>

海外服務(wù)器請求結(jié)果也是上面這樣……然后發(fā)現(xiàn)是因為我的海外服務(wù)器ip壓根不在那個black的deny列表里面

嘗試把ip的網(wǎng)段給加進(jìn)去,重啟nginx再試試。完美處理!添加前能正常請求到,添加后就變成403了

[root@RainYun-8aNbbsmA:~]# curl https://artk.musnow.top/sidebar/#/login
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Artalk Sidebar</title>
    <script type="module" crossorigin src="./assets/index-5a0b3a93.js"></script>
    <link rel="stylesheet" href="./assets/index-84fdcf98.css" rel="external nofollow"  rel="external nofollow"  rel="external nofollow" >
  </head>
  <body>
    <div id="app"></div>

  </body>
</html>
[root@RainYun-8aNbbsmA:~]#
[root@RainYun-8aNbbsmA:~]# curl https://artk.musnow.top/sidebar/#/login
<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx/1.20.1</center>
</body>
</html>
[root@RainYun-8aNbbsmA:~]#

nginx屏蔽非國內(nèi)ip

我前文提到了我的海外服務(wù)器的ip不在這個deny的ip列表里面,沒有被屏蔽。

考慮到網(wǎng)上搜不到legacy-apnic-latest文件存放的是什么ip的信息,我決定換一個思路:allow國內(nèi)的ip,拒絕所有非國內(nèi)的ip

下面這個url里面的ip地址標(biāo)明了地區(qū),我們只需要將其提取出來即可

http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest

這個文件里面的內(nèi)容結(jié)構(gòu)如下

等級機(jī)構(gòu)|獲得該IP段的國家/組織|資源類型|起始IP|IP段長度|分配日期|分配狀態(tài)

我們只需要提取CN的所有IP,然后允許他們,再deny all阻止其他ip就可以了

#!/bin/bash
rm -f delegated-apnic-latest blackcn_`date +%F`.conf && wget http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest

awk -F\| '/CN\|ipv4/ { printf("%s %s/%d%s\n","allow",$4, 32-log($5)/log(2), ";") }' delegated-apnic-latest > blackcn_`date +%F`.conf && \
rm -f /etc/nginx/blackcn.conf && \
ln -s $PWD/blackcn_`date +%F`.conf /etc/nginx/blackcn.conf

執(zhí)行這個腳本后,會生成/etc/nginx/blackcn.conf文件

[root@bt-7274:/etc/nginx]# ll
total 88
lrwxrwxrwx 1 root root   42 Dec  9 16:54 blackcn.conf -> /root/docker/nginx/blackcn_2023-12-09.conf
lrwxrwxrwx 1 root root   40 Dec  9 16:56 blackip.conf -> /root/docker/nginx/black_2023-12-09.conf

內(nèi)容如下

allow 223.248.0.0/14;
allow 223.252.128.0/17;
allow 223.254.0.0/16;
allow 223.255.0.0/17;
allow 223.255.236.0/22;
allow 223.255.252.0/23;
....

還是修改nginx單個站點配置文件的location中的內(nèi)容

    location / {
        proxy_redirect off;
    	proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_set_header Upgrade-Insecure-Requests 1;
        proxy_set_header X-Forwarded-Proto https;
		# 允許所有國內(nèi)ip
    	include /etc/nginx/blackcn.conf;
    	deny all; # 阻止其他ip

    	proxy_pass http://127.0.0.1:14722;
        }

先來試試不修改配置文件(不做任何deny和allow操作的情況下)海外ip請求結(jié)果

[root@RainYun-8aNbbsmA:~]# curl https://artk.musnow.top/sidebar/#/login
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Artalk Sidebar</title>
    <script type="module" crossorigin src="./assets/index-5a0b3a93.js"></script>
    <link rel="stylesheet" href="./assets/index-84fdcf98.css" rel="external nofollow"  rel="external nofollow"  rel="external nofollow" >
  </head>
  <body>
    <div id="app"></div>

  </body>
</html>

符合預(yù)期,正常請求出了登錄頁面的html文件。

添加如上修改后,重啟nginx,再次進(jìn)行測試。這一次已經(jīng)403阻止了,完美!

[root@RainYun-8aNbbsmA:~]# curl https://artk.musnow.top/sidebar/#/login
<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx/1.20.1</center>
</body>
</html>

The end

你可以寫個crontab讓其定時執(zhí)行腳本并重啟nginx,我個人還是選擇人工處理了(什么時候想起來就去更新一下ip列表)

以上就是Nginx通過配置文件阻止海外ip訪問的方法步驟的詳細(xì)內(nèi)容,更多關(guān)于Nginx阻止海外ip訪問的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • nginx通過https部署vue項目的完整步驟

    nginx通過https部署vue項目的完整步驟

    在實際開發(fā)中,我們會以https形式進(jìn)行頁面訪問,下面這篇文章主要給大家介紹了關(guān)于nginx通過https部署vue項目的完整步驟,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • 關(guān)于Nginx動靜分離詳解以及配置

    關(guān)于Nginx動靜分離詳解以及配置

    這篇文章主要介紹了關(guān)于Nginx動靜分離詳解以及配置,動靜分離是通過中間件將動態(tài)請求和靜態(tài)請求進(jìn)行分離,分離資源,減少不必要的請求消耗,減少請求延時,需要的朋友可以參考下
    2023-04-04
  • Nginx(PHP/fastcgi)的PATH_INFO問題

    Nginx(PHP/fastcgi)的PATH_INFO問題

    PATH_INFO是一個CGI 1.1的標(biāo)準(zhǔn),經(jīng)常用來做為傳參載體. 比如, 我們可以使用PATH_INFO來代替Rewrite來實現(xiàn)偽靜態(tài)頁面, 另外不少PHP框架也使用PATH_INFO來作為路由載體.
    2011-08-08
  • 淺談Nginx七層反向代理和負(fù)載均衡

    淺談Nginx七層反向代理和負(fù)載均衡

    這篇文章主要介紹了淺談Nginx七層反向代理和負(fù)載均衡,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • Nginx基本運行原理解析

    Nginx基本運行原理解析

    這篇文章給大家介紹Nginx基本運行原理解析,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2026-05-05
  • Nginx部署前端靜態(tài)文件指南分享(基于虛擬機(jī)環(huán)境)

    Nginx部署前端靜態(tài)文件指南分享(基于虛擬機(jī)環(huán)境)

    本筆記詳細(xì)介紹了如何使用Nginx部署前端靜態(tài)文件,包括環(huán)境準(zhǔn)備、文件傳輸、配置文件編寫、自定義配置加載、驗證配置和日志查看等步驟,通過實踐操作,用戶可以掌握用Nginx快速部署任意前端靜態(tài)文件的核心技能
    2026-02-02
  • 記一次nginx配置不當(dāng)引發(fā)的499與failover 機(jī)制失效問題

    記一次nginx配置不當(dāng)引發(fā)的499與failover 機(jī)制失效問題

    近期在非高峰期也存在499超過告警閾值的偶發(fā)情況,多的時候一天幾次,少的時候則幾天一次,持續(xù)一般也就數(shù)分鐘,經(jīng)過和小伙伴的共同探究,最后發(fā)現(xiàn)之前對于499是客戶端主動斷開因而和服務(wù)端關(guān)系不大的想當(dāng)然認(rèn)知是錯誤的,這里記錄一下
    2023-05-05
  • linux下安裝Nginx1.16.0的教程詳解

    linux下安裝Nginx1.16.0的教程詳解

    因為最近在倒騰linux,想安裝新版本的nginx,找了一圈教程沒有找到對應(yīng)的教程,在稍微倒騰了一會之后終于成功的安裝了最新版。這篇文章主要介紹了linux下安裝Nginx1.16.0 ,需要的朋友可以參考下
    2019-06-06
  • Nginx同一個域名配置多個項目的實現(xiàn)方法

    Nginx同一個域名配置多個項目的實現(xiàn)方法

    這篇文章主要介紹了Nginx同一個域名配置多個項目的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • nginx?負(fù)載均衡輪詢方式配置詳解

    nginx?負(fù)載均衡輪詢方式配置詳解

    負(fù)載均衡(load-balance)就是將負(fù)載分?jǐn)偟蕉鄠€操作單元上執(zhí)行,從而提高服務(wù)的可用性和響應(yīng)速度,帶給用戶更好的體驗,本文給大家介紹nginx?負(fù)載均衡輪詢方式配置,感興趣的朋友一起看看吧
    2022-03-03

最新評論

城步| 连江县| 济源市| 巴中市| 平度市| 武山县| 呼玛县| 乌什县| 固镇县| 阿克陶县| 高安市| 聊城市| 天气| 桑植县| 双桥区| 成武县| 三都| 芒康县| 陆良县| 金坛市| 同江市| 鹤峰县| 富民县| 东安县| 永宁县| 乌兰县| 永靖县| 应用必备| 宁蒗| 攀枝花市| 潜山县| 玛沁县| 寻乌县| 常山县| 天全县| 海兴县| 武平县| 兴海县| 南宫市| 玉环县| 商丘市|