<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何通過Nginx實現禁止國外IP訪問網站

jf_TEuU2tls ? 來源:頭條號運維小弟 ? 2023-12-01 11:12 ? 次閱讀

前言

大家好,這里是浩道Linux,主要給大家分享Linux、Python、網絡通信、網絡安全等相關的IT知識平臺。

最近不少小伙伴反饋自己維護的項目中,經常在后臺可以看到來自國外IP的攻擊,令人頭疼。今天浩道跟大家分享如何通過Nginx來實現禁止國外IP訪問網站,確保你網站免遭國外IP攻擊了!

如果你對nginx相關知識感興趣,可以看看這篇,可以確保你快速掌握其功能與應用場景!

想要實現這個功能有很多方法,下面我就來介紹基于 NGINX 的 ngx_http_geoip2 模塊 來禁止國外 IP 訪問網站

一、安裝 geoip2 擴展依賴

[root@fxkj~]#yuminstalllibmaxminddb-devel-y

二、下載 ngx_http_geoip2_module 模塊

[root@fxkjtmp]#gitclonehttps://github.com/leev/ngx_http_geoip2_module.git
[rotmp]#

三、解壓模塊到指定路徑

我這里解壓到/usr/local 目錄下

[root@fxkjtmp]#mvngx_http_geoip2_module//usr/local/
[root@fxkjlocal]#llngx_http_geoip2_module/
total60
-rw-r--r--1rootroot1199Aug1317:20config
-rw-r--r--1rootroot1311Aug1317:20LICENSE
-rw-r--r--1rootroot23525Aug1317:20ngx_http_geoip2_module.c
-rw-r--r--1rootroot21029Aug1317:20ngx_stream_geoip2_module.c
-rw-r--r--1rootroot3640Aug1317:20README.md

四、安裝 nginx 模塊

首先說明下環境,我的 nginx 版本是 1.16 , 在網上查了下 安裝 ngx_http_geoip2 模塊至少需要 1.18 版本及以上,因此此次安裝我是 升級 nginx1.18,添加 ngx_http_geoip2 模塊。

下載 nginx 1.18 版本

[root@fxkj~]#yuminstalllibmaxminddb-devel-y

解壓 nginx1.18 軟件包并 升級為 nginx1.18 ,添加 ngx_http_geoip2 模塊

需要注意:

1、升級 nginx, 添加 nginx 模塊 只需要 編譯 然后 make 不需要 make instll 不然線上的 nginx 會被新版本 nginx 完完整整的替換掉

2、編譯前 需要看下 nginx 當前安裝了哪些模塊

[root@fxkjtmp]#/usr/local/nginx/sbin/nginx-V

nginxversion:nginx/1.16.0

builtbygcc4.8.520150623(RedHat4.8.5-39)(GCC)

builtwithOpenSSL1.0.2k-fips26Jan2017

TLSSNIsupportenabled

configurearguments:–with-http_stub_status_module–prefix=/usr/local/nginx–user=nginx–group=nginx–with-http_ssl_module–with-stream

編譯安裝

[root@fxkjtmp]#tar-xfnginx-1.18.0.tar.gz
[root@fxkjtmp]#cdnginx-1.18.0/
[root@fxkjnginx-1.18.0]#./configure--with-http_stub_status_module
--prefix=/usr/local/nginx
--user=nginx--group=nginx--with-http_ssl_module--with-stream
--add-module=/usr/local/ngx_http_geoip2_module
[root@fxkjnginx-1.18.0]#make
[root@fxkjnginx-1.18.0]#cp/usr/loca/nginx/sbin/nginx/usr/loca/nginx/sbin/nginx1.16#備份
[root@fxkjnginx-1.18.0]#cpobjs/nginx/usr/local/nginx/sbin/#用新的去覆蓋舊的
[root@fxkjnginx-1.18.0]#pkillnginx#殺死nginx
[root@fxkjnginx-1.18.0]#/usr/local/nginx/sbin/nginx#再次啟動Nginx

查看 nginx 版本 以及安裝的模塊

[root@fxkjnginx-1.18.0]#/usr/local/nginx/sbin/nginx-V

nginxversion:nginx/1.18.0

builtbygcc4.8.520150623(RedHat4.8.5-39)(GCC)

builtwithOpenSSL1.0.2k-fips26Jan2017

TLSSNIsupportenabled

configurearguments:–with-http_stub_status_module–prefix=/usr/local/nginx–user=nginx–group=nginx–with-http_ssl_module–with-stream–add-module=/usr/local/ngx_http_geoip2_module

五、下載最新的 IP 地址數據庫文件

模塊安裝成功后,還要在 Nginx 里指定數據庫,在安裝運行庫時默認安裝了兩個,位于 /usr/share/GeoIP/ 目錄下,一個只有 IPv4,一個包含 IPv4 和 IPv6:

登錄 www.maxmind.com 網址,創建賬戶 下載最新的庫文件(賬戶創建就不演示了)

點擊左側 ,Download Files

0bdd08ee-8fdc-11ee-939d-92fbcf53809c.png

選擇 GeoLite2 Country ,點擊 Download GZIP 下載即可

0beed3ee-8fdc-11ee-939d-92fbcf53809c.png

上傳到 /usr/share/GeoIP/ 下并解壓

[root@fxkjlocal]#cd/usr/share/GeoIP/
[root@fxkjGeoIP]#ll
total69612
lrwxrwxrwx.1rootroot17Mar72019GeoIP.dat->GeoIP-initial.dat
-rw-r--r--.1rootroot1242574Oct302018GeoIP-initial.dat
lrwxrwxrwx.1rootroot19Mar72019GeoIPv6.dat->GeoIPv6-initial.dat
-rw-r--r--.1rootroot2322773Oct302018GeoIPv6-initial.dat
-rw-r--r--1rootroot3981623Aug1202:37GeoLite2-Country.mmdb

六、配置 nginx 配置文件

修改前 先備份配置文件

[root@fxkj ~]#cp/usr/local/nginx/conf/nginx.conf/usr/local/nginx/conf/nginx.conf-bak
[root@fxkj ~]#vim/usr/local/nginx/conf/nginx.conf

在 http 中添加 幾行,定義數據庫文件位置

geoip2/usr/share/GeoIP/GeoLite2-City.mmdb{
auto_reload5m;
$geoip2_data_country_codecountryiso_code;
}
map$geoip2_data_country_code$allowed_country{
defaultyes;
CNno;
}
0bfcf550-8fdc-11ee-939d-92fbcf53809c.png

在 server 中的 location 下 添加 條件

如果滿足 IP 是國外 IP 就 執行下面的 return 動作,我這里定義了 3 種, 注釋了其中兩個。

當訪問 IP 是國外 IP ,直接返回 404

if($allowed_country=yes){
#returnhttps://www.baidu.com;
#return/home/japan;
return404;
}

修改完畢后, 檢測下配置文件,重新加載下 nginx

[root@fxkj~]#/usr/local/nginx/sbin/nginx-t
nginx:theconfigurationfile/usr/local/nginx/conf/nginx.confsyntaxisok
nginx:configurationfile/usr/local/nginx/conf/nginx.conftestissuccessful
[roo@fxkj~]#/usr/local/nginx/sbin/nginx-sreload

7、模擬測試驗證

使用海外節點的服務器去訪問網站

這里我的 IP 是 來自于韓國

0c075bc6-8fdc-11ee-939d-92fbcf53809c.png

可以看到訪問網站報錯 404 Not Found

0c27edc8-8fdc-11ee-939d-92fbcf53809c.png

我們再來看下 nginx 的訪問日志

“13.125.1.194––[14/Aug/2020:16:15:51+0800]“GET/favicon.icoHTTP/1.1”404548“https://www.fxkjnj.com/”“Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/84.0.4147.125Safari/537.36”
0c356110-8fdc-11ee-939d-92fbcf53809c.png

至此,我們通過 Nginx 來實現禁止國外 IP 訪問網站 就結束了!

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11008

    瀏覽量

    206904
  • IP
    IP
    +關注

    關注

    5

    文章

    1413

    瀏覽量

    148372
  • 網站
    +關注

    關注

    1

    文章

    256

    瀏覽量

    22801
  • nginx
    +關注

    關注

    0

    文章

    136

    瀏覽量

    12016

原文標題:網站經常遭受外國IP攻擊?可以通過Nginx來禁止其訪問!

文章出處:【微信號:浩道linux,微信公眾號:浩道linux】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    網站用戶終于解決訪問網站慢的問題

    成熟,提供的也不是很多.以個人的經驗,下面給大家介紹一下雙線主機吧!雙線主機服務 雙線服務器實際是一臺服務器分別有電信和網通兩條線路接入,通過對用戶 IP 地址的智能解析,實現電信用戶訪問
    發表于 08-03 15:47

    IP屏蔽軟件作用

    、國外用戶訪問,當然也可以只限制某個地區訪問!由于許多公司產品相似,一些同行競爭對手缺乏原創精神,總是拷貝別人網站上一些優秀圖片及文字發布到自己的
    發表于 11-05 13:58

    如何在電腦上禁止訪問QQ空間

    今天教大家如何在電腦上不影響QQ正常使用的前提下,禁止訪問QQ空間。IE的那個設置不行,因為一旦登錄qzone.qq.com網站,qq程序會自動引導解除屏蔽,改hosts也不行,所以我們要用其他
    發表于 04-28 15:02

    如何訪問國外網站,包括github網站????

    `想***,可是網速會不不給力。同志們,誰有好方法去訪問米國的網站呢????`
    發表于 03-12 10:57

    【NanoPi NEO試用體驗】之安裝配置Nginx環境WEB網站詳解

    WEB網站的經典環境。首先NanoPi NEO原生就是為LINUX系統而開發的所以系統方面不用擔心。至于NGINX和PHP在WEB網站用戶訪問量不超過1000次并發
    發表于 10-18 12:25

    NanoPi NEO - 可靠的Nginx 網絡服務器

    )是為任何規模的網站,尤其是繁忙的網站有用的一些附加功能的替代PHP 的FastCGI 實現),安裝如下:#apt-get -y install php7.0-fpm5. 配置nginx
    發表于 06-20 15:43

    如何通過Dataworks禁止MaxCompute 子賬號跨Project訪問

    ://ram.console.aliyun.com/2、通過用戶管理創建RAM子賬號,同時保存ak信息。3、開通RAM子賬號獨立登錄訪問權限。4、通過Dataworks項目管理,實現
    發表于 03-15 11:21

    Linux運維Nginx軟件優化之安全優化

    一、Nginx優化分類安全優化(提升網站安全性配置)性能優化(提升用戶訪問網站效率)二、Nginx安全優化2.1 隱藏
    發表于 12-17 15:12

    nginx實現的負載均衡

    nginx實現負載均衡
    發表于 05-04 13:42

    主要學習下nginx的安裝配置

    處理。因為有了中間件,使得大型網站在規劃有了更好的層次性,維護上更加方便。也可以實現負載均衡、安全防護等。Nginx是一個開源高性能、可靠的HTTP中間件、代理服務,在目前企業中得到了很大的利用。今天
    發表于 10-19 14:12

    蘋果禁止iPhone黑客訪問App Store應用商店

    蘋果禁止iPhone黑客訪問App Store應用商店  據國外媒體報道,蘋果近日對曾經入侵iPhone手機操作系統的黑客采取了較為嚴歷的打擊措
    發表于 02-22 09:34 ?572次閱讀

    配置Nginx訪問日志

    每當處理客戶請求時,Nginx都會在訪問日志中生成一個新記錄。每個事件記錄都包含一個時間戳,并包含有關客戶端和所請求資源的各種信息。訪問日志可以顯示訪問者的位置,
    的頭像 發表于 05-24 09:59 ?2027次閱讀

    如何通過Nginx實現遠程調試本機代碼

    做 HTTPS 就不需要改代碼了,只需修改 host 將后端測試環境域名指向 nginx 服務的 IP 即可,而且可以適用于其它的 HTTP 服務開發調試。
    發表于 03-03 15:26 ?301次閱讀

    多個相同IP設備通過網段隔離器實現不同IP訪問映射

    )來解決這一問題,它允許多個設備在內部網絡上共享單個公共IP地址,并實現外網的跨網段訪問。 網段隔離器可以通過WAN和LAN不同防火墻區域進行網段隔離;
    的頭像 發表于 11-15 17:21 ?396次閱讀
    多個相同<b class='flag-5'>IP</b>設備<b class='flag-5'>通過</b>網段隔離器<b class='flag-5'>實現</b>不同<b class='flag-5'>IP</b>的<b class='flag-5'>訪問</b>映射

    Nginx的配置文件如何設置頭信息保留真實IP不丟失

    Nginx 配置中設置頭信息以保留客戶端的真實 IP 地址通常是在使用反向代理的場景中需要的。當 Nginx 作為反向代理時,客戶端的真實 IP 地址可能會在轉發請求時丟失,因為到
    的頭像 發表于 11-30 10:54 ?1030次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>