1. 程式人生 > >Nginx禁止ip訪問或IP網段訪問方法

Nginx禁止ip訪問或IP網段訪問方法

轉載:https://www.cnblogs.com/already/p/6244295.html

Nginx禁止ip訪問可以防止指定IP訪問我們的網站,本例子可以實現是防止單IP訪問或IP網段訪問了,非常的有用我們一起來看看吧。

常用的linux做法

iptables參考規則

 程式碼如下 複製程式碼

iptables -I INPUT -p tcp –dport 80 -m –mac-soruce$MAC -j DROP 基於mac地址的
iptables -I INPUT -p tcp –dport 80 -s $IP -j DROP 基於ip地址的

方法一,

首先建立下面的配置檔案放在nginx的conf目錄下面,命名為blocksip.conf:
 
加入以下程式碼:

 程式碼如下 複製程式碼

#遮蔽soso蜘蛛IP
deny 113.108.12.154;    #此為搜搜蜘蛛IP
deny 124.115.0.0/24;    #此為遮蔽搜搜蜘蛛124.115.0.1 ~ 124.115.0.255整個網段IP
deny 124.115.4.0/24;    #此為遮蔽搜搜蜘蛛124.115.4.1 ~ 124.115.4.255整個網段IP
遮蔽整個網段的IP時有可能會造成錯殺,不過幾率很低。


儲存一下。

在nginx的配置檔案nginx.conf中加入:include blocksip.conf;

重啟一下nginx的服務:/usr/local/nginx/sbin/nginx -s reload 就可以生效了。

方法二,利用nginx的ngx_http_access_module


ngx_http_access_module 模組可以用來設定允許/禁止哪些ip或ip段訪問,可以設定一個檔案內容類似下面的:

 程式碼如下 複製程式碼
deny IP;
deny subnet;
allow IP;
allow subnet;
# block all i
ps

deny    all;
# allow all ips
allow    all;

其中網段的寫法是這樣的:192.168.1.0/24這樣的形式。
然後編輯nginx.conf,加入一行:
include blockips.conf;
這樣設定以後,該伺服器上所有的網站都會按照這個設定來拒絕或允許訪問。如果想只針對某個網站,可以在具體的網站的配置中加入:

 程式碼如下 複製程式碼
location / {
allow   192.168.0.0/24;
deny    all;
}

這樣就只允許192.168.0.0網段的ip訪問,其他ip訪問會返回一個403錯誤。
還可以自定義一個403錯誤的頁面,可以在/usr/local/nginx/html下新建個error403.html檔案,裡面按照html的語法寫個文件,寫上一些說明文字。
然後編輯nginx.conf,加入:

 程式碼如下 複製程式碼
error_page   403  /error403.html;
location = /error403.html {
root   html;
}