Nginx禁止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 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;
}
时间: 2024-09-25 12:09:46

Nginx禁止ip访问或IP网段访问方法的相关文章

nginx禁止某个IP或某个IP段访问网站

禁止单个IP的写法:  代码如下 复制代码 deny x.x.x.x; 禁止IP段的写法:  代码如下 复制代码 deny 10.0.0.0/24; 也可以实现只允许某个IP或某个IP段用户访问,其它的用户全都禁止:  代码如下 复制代码 allow x.x.x.x; allow 10.0.0.0/24; deny all; 重新启动nginx即可生效,下面我们具体看实例 首先建立下面的配置文件放在nginx的conf目录下面,命名为blocksip.conf: deny 95.105.25.1

Nginx禁止用户真实IP访问的方法配置

做过面向公网WEB运维的苦逼们肯定见识过各种恶意扫描.拉取.注入等图谋不轨行为吧?对于直接对外的WEB服务器,我们可以直接通过 iptables . Nginx 的deny指令或者是程序来ban掉这些恶意请求.   而对于套了一层 CDN 或代理的网站,这些方法可能就失效了.尤其是个人网站,可能就一台VPS,然后套一个免费的CDN就行走在互联网了.并不是每个CDN都能精准的拦截各种恶意请求的,更闹心的是很多CDN还不支持用户在CDN上添加BAN规则,比如腾讯云CDN...   因此,就有了本文的

Nginx 禁止IP访问 只允许域名访问_nginx

我们在使用的时候会遇到很多的恶意IP攻击,这个时候就要用到Nginx 禁止IP访问了.下面我们就先看看Nginx的默认虚拟主机在用户通过IP访问,或者通过未设置的域名访问(比如有人把他自己的域名指向了你的ip)的时 候生效最关键的一点是,在server的设置里面添加这一行:listen 80 default; 后面的default参数表示这个是默认虚拟主机. Nginx 禁止IP访问这个设置非常有用. 比如别人通过ip或者未知域名访问你的网站的时候,你希望禁止显示任何有效内容,可以给他返回500

nginx禁止访问固定目录的问题

问题描述 nginx禁止访问固定目录的问题 nginx配置如下 location /apps/id/ { deny 10.1.2.3;}为什么配置生效后所有的ip访问/apps/id/都返回403 Forbidden错误 解决方案 deny的ip是否正确

Python访问纯真IP数据库脚本分享

  这篇文章主要介绍了Python访问纯真IP数据库脚本分享,本文直接给出实现代码,需要的朋友可以参考下 项目中有这样的需求,通过IP地址判断客户端是网通的还是电信的.从同事那拿了个纯文本的IP纯真数据库,用Python写了一个小程序,感觉挺好的.下面给出实现源码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 #!/

Nginx禁止特定用户代理(User Agents)访问(转)

Nginx可以通过各种方式来限制访问,例如NGINX基本Http认证.allow/deny等等,这些都是前文提过的,今天来看看nginx如果通过用户代理来禁止访问. user agent是什么? 用户代理是指浏览器,它的信息包括硬件平台.系统软件.应用软件和用户个人偏好.用户代理的能力和偏好可以认为是元数据或用户代理的硬件和软件的特性和描述: 不太好理解,简单来说告诉服务器你当前使用的是什么浏览器.工具等等.例如火狐.谷歌chrome.wget.curl. 如何禁止特定UA 我们不希望被使用wg

confluence怎么统计知识库的来访IP和单个文章的访问次数

问题描述 confluence怎么统计知识库的来访IP和单个文章的访问次数 1.confluence中添加了很多文档,当前想分析下哪些文档对工程师们最有帮助,哪些文档 是点击率最高的. 2.想从两个方面下手,一个是从数据库中来统计,另一个是从jsp界面上,添加jsp脚本来 统计.麻烦各位大神帮忙想下办法,谢谢!!~ 祝CSDN越来越好,谢谢

tomcat-使用ip地址加端口号访问jsp上传页面不能上传文件

问题描述 使用ip地址加端口号访问jsp上传页面不能上传文件 我做了一个上传照片到mysql数据库的jsp页面,当使用localhost加端口8080时可以进入 页面上传照片到mysql,但是我把项目部署到tomcat下的webapps下时,可以通过ip地址 加端口号8080(我的端口号没做修改)可以访问到我的jsp界面,但是不能够上传照片,我 把上传照片的文件名输出到控制台看了一下,发现文件名只包含了文件的名称没有文件 的路径,控制台提示是:没有找到该照片.麻烦大家帮我看看,谢谢大家! <%

ip可以访问域名不行-IP可以访问,域名无法访问

问题描述 IP可以访问,域名无法访问 遇到一个棘手的问题: 端口为80端口 http+IP可以访问, https+域名可以访问 http+域名不可以访问 防火墙已关 后来我换了81端口就都可以了 唯一就是http + 域名 + 80端口访问不了,无解 域名可以Ping通, ping处理的IP是可以访问的 server是IBM的HTTP SERVER,一开始怀疑是Http server的问题,后来我重新装了一个纯净的apahce,也是同样的情况,证明不是http server的问题 还有这个IP绑

jvm-apache连接数过多时域名无法访问,ip访问tomcat应用正常

问题描述 apache连接数过多时域名无法访问,ip访问tomcat应用正常 请教下大家: 我官网www域名解析到一台装有apache的服务器上,二级域名从apache转到tomcat服务器上. tomcat和apache的最大连接数我都设置了1500. 目前出现这种现象: 通过观察tomcat manage控制台发现,8009端口Current thread busy: 1001,域名服务无法访问,但是ip访问8080应用还是可以的.一旦出现这个问题,导致我www页面无法访问,二级域名应用无法