nginx下禁止某些ip访问web服务器的配置
TNND 我的博客最近老是有人来刷留言。搞到我数据库都爆了。列你黑名单。 本来想在iptables上面设置的。后来想了一下直接在nginx 上面设置更简单。
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;
其中网段的写法是这样的: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;
}
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下禁止某些ip访问web服务器的配置
-
nginx下禁止某些ip访问web服务器的配置
-
【转载】 腾讯云通过设置安全组禁止某些IP访问你的服务器
-
Nginx中禁止使用IP访问网站的配置实例
-
nginx-Nginx怎么配置访问同一个IP下的不同路径,来访问不同的项目,没有域名,只能通过IP地址访问
-
Nginx防止直接用IP访问Web服务器的设置方法
-
[云服务器]linux宝塔面板下配置连接mysql的jdbc配置及设置通过自己的域名来访问web项目
-
Nginx 禁止直接使用IP或未绑定的域名访问Web服务器
-
Nginx 禁止直接使用IP或未绑定的域名访问Web服务器
-
nginx前端,tomcat后端服务器获取客户的真实IP,包括tomcat访问日志获取真实IP的配置