Nginx阻止并拒绝IP地址或者网络子网

时间:2020-01-09 10:42:18  来源:igfitidea点击:

如何根据nginx Web服务器下客户端访问网站的主机名或者IP地址阻止或者拒绝访问?

Nginx带有一个名为ngx_http_access_module的简单模块,用于允许或者拒绝对IP地址的访问。
语法如下:

deny IP;
deny subnet;
allow IP;
allow subnet;
# block all ips
deny    all;
# allow all ips 
allow    all;

规则按照其记录到第一个匹配的顺序进行检查。

如何配置Nginx阻止IP?

编辑nginx.conf文件,输入(注意我的nginx路径设置为/usr/local/nginx /,根据您的设置替换它):

# cd /usr/local/nginx/conf/
# vi nginx.conf

在http部分中添加以下行:

## Block spammers and other unwanted visitors  ##
include blockips.conf;

保存并关闭文件。
最后,在/usr/local/nginx/conf /中创建blockips.conf,执行:

# vi blockips.conf

追加/添加条目,如下所示:

deny 1.2.3.4;
deny 91.212.45.0/24;
deny 91.212.65.0/24;

保存并关闭文件。
测试配置文件,执行:

# /usr/local/nginx/sbin/nginx -t

输出示例:

the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
configuration file /usr/local/nginx/conf/nginx.conf test is successful

重新加载新配置,执行:

# /usr/local/nginx/sbin/nginx -s reload

如何拒绝全部并仅允许Intranet/LAN IP?

编辑配置文件,如下所示:

location / {
  # block one workstation
  deny    192.168.1.1;
  # allow anyone in 192.168.1.0/24
  allow   192.168.1.0/24;
  # drop rest of the world 
  deny    all;
}

授予访问网络192.168.1.0/24的权限,但地址192.168.1.1除外。

如何自定义HTTP 403禁止错误消息?

在默认文档根目录中创建一个名为error403.html的文件,执行:

# cd /usr/local/nginx/html
# vi error403.html
<html>
<head><title>Error 403 - IP Address Blocked</title></head>
<body>
Your IP Address is blocked. If you this an error, please contact webmaster with your IP at [email protected]
</body>
</html>

如果启用了SSI,则可以从html页面本身轻松显示客户端IP:

Your IP Address is <!--#echo var="REMOTE_ADDR" --> blocked.

保存并关闭文件。
编辑您的nginx.conf文件,执行:

# vi nginx.conf
# redirect server error pages to the static page
error_page   403  /error403.html;
location = /error403.html {
         root   html;
}

保存并关闭文件。
重新加载nginx,执行:

# /usr/local/nginx/sbin/nginx -s reload