社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  NGINX

【Nginx】如何封禁IP和IP段?看完这篇我会了!!

Java编程子恩 • 6 年前 • 409 次点击  
阅读 1

【Nginx】如何封禁IP和IP段?看完这篇我会了!!

写在前面

Nginx不仅仅只是一款反向代理和负载均衡服务器,它还能提供很多强大的功能,例如:限流、缓存、黑白名单和灰度发布等等。在之前的文章中,我们已经介绍了Nginx提供的这些功能。今天,我们来介绍Nginx另一个强大的功能:禁用IP和IP段。

禁用IP和IP段

Nginx的ngx_http_access_module 模块可以封配置内的ip或者ip段,语法如下:

deny IP; 
deny subnet; 
allow IP; 
allow subnet; 
# block all ips 
deny    all; 
# allow all ips 
allow    all; 
复制代码

如果规则之间有冲突,会以最前面匹配的规则为准。

配置禁用ip和ip段

下面说明假定nginx的目录在/usr/local/nginx/。

首先要建一个封ip的配置文件blockips.conf,然后vi blockips.conf编辑此文件,在文件中输入要封的ip。

deny 1.2.3.4; 
deny 91.212.45.0/24; 
deny 91.212.65.0/24; 
复制代码

然后保存此文件,并且打开nginx.conf文件,在http配置节内添加下面一行配置:

include blockips.conf; 
复制代码

保存nginx.conf文件,然后测试现在的nginx配置文件是否是合法的:

/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 
复制代码

如果配置有问题就需要检查下哪儿有语法问题,如果没有问题,需要执行下面命令,让nginx重新载入配置文件。

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

仅允许内网ip

如何禁止所有外网ip,仅允许内网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.1,允许其他内网网段,然后deny all禁止其他所有ip。

格式化nginx的403页面

如何格式化nginx的403页面呢?

首先执行下面的命令:

cd /usr/local/nginx/html 
vi error403.html 
复制代码

然后输入403的文件内容,例如:

<html> 
<head><title>Error 403 - IP Address Blocked</title></head> 
<body> 
Your IP Address is blocked. If you this an error, please contact binghe with your IP at test@binghe.com 
</body> 
</html> 
复制代码

如果启用了SSI,可以在403中显示被封的客户端ip,如下:

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

保存error403文件,然后打开nginx的配置文件vi nginx.conf,在server配置节内添加下面内容。

# redirect server error pages to the static page 
 error_page   403  /error403.html; 
 location = /error403.html { 
         root   html; 
 } 
复制代码

然后保存配置文件,通过nginx -t命令测试配置文件是否正确,若正确通过nginx -s reload载入配置。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/71359