天天看點

nginx限制ip通路_通過Nginx來實作禁止國外IP通路網站

前言:先來說說為啥要寫這篇文章,之前小編看了下 nginx 的通路日志,發現每天有好多國外的 IP 位址來通路我的網站,并且通路的内容基本上都是惡意的。是以 我決定 禁止國外 IP 來通路我的網站

想要實作這個功能有很多方法,下面我就來介紹基于 NGINX 的 ngx_http_geoip2 子產品 來禁止國外 IP 通路網站

一、安裝 geoip2 擴充依賴

二、下載下傳 ngx_http_geoip2_module 子產品

三、解壓子產品到指定路徑

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

四、安裝 nginx 子產品

首先說明下環境,我的 nginx 版本是 1.16 , 在網上查了下 安裝 ngx_http_geoip2 子產品至少需要 1.18 版本及以上,是以此次安裝我是 更新 nginx1.18,添加 ngx_http_geoip2 子產品。

  • 下載下傳 nginx 1.18 版本
  • 解壓 nginx1.18 軟體包并 更新為 nginx1.18 ,添加 ngx_http_geoip2 子產品

需要注意:

1、更新 nginx, 添加 nginx 子產品 隻需要 編譯 然後 make 不需要 make instll 不然線上的 nginx 會被新版本 nginx 完完整整的替換掉

2、編譯前 需要看下 nginx 目前安裝了哪些子產品

編譯安裝

檢視 nginx 版本 以及安裝的子產品

五、下載下傳最新的 IP 位址資料庫檔案

子產品安裝成功後,還要在 Nginx 裡指定資料庫,在安裝運作庫時預設安裝了兩個,位于 /usr/share/GeoIP/ 目錄下,一個隻有 IPv4,一個包含 IPv4 和 IPv6:

登入 www.maxmind.com 網址,建立賬戶 下載下傳最新的庫檔案(賬戶建立就不示範了)

點選左側 ,Download Files

nginx限制ip通路_通過Nginx來實作禁止國外IP通路網站

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

nginx限制ip通路_通過Nginx來實作禁止國外IP通路網站

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

六、配置 nginx 配置檔案

修改前 先備份配置檔案

[[email protected] ~]# cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf-bak

[[email protected] ~]# vim /usr/local/nginx/conf/nginx.conf

在 http 中添加 幾行,定義資料庫檔案位置

nginx限制ip通路_通過Nginx來實作禁止國外IP通路網站

在 server 中的 location 下 添加 條件

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

當通路 IP 是國外 IP ,直接傳回 404

修改完畢後, 檢測下配置檔案,重新加載下 nginx

7、模拟測試驗證

使用海外節點的伺服器去通路網站

這裡我的 IP 是 來自于南韓

nginx限制ip通路_通過Nginx來實作禁止國外IP通路網站

可以看到通路網站報錯 404 Not Found

nginx限制ip通路_通過Nginx來實作禁止國外IP通路網站

我們再來看下 nginx 的通路日志

nginx限制ip通路_通過Nginx來實作禁止國外IP通路網站

通過 Nginx 來實作禁止國外 IP 通路網站

到此 我們通過 Nginx 來實作禁止國外 IP 通路網站 就結束了

來源:https://www.toutiao.com/i6860736292339057156/

nginx限制ip通路_通過Nginx來實作禁止國外IP通路網站
nginx限制ip通路_通過Nginx來實作禁止國外IP通路網站

繼續閱讀