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