在Nginx服务器上屏蔽IP的一些基本配置方法分享_nginx

采集和防止采集是一个经久不息的话题,一方面都想搞别人的东西,另一方面不想自己的东西被别人搞走。

本文介绍如何利用nginx屏蔽ip来实现防止采集,当然也可以通过iptable来实现。

1.查找要屏蔽的ip

awk '{print $1}' nginx.access.log |sort |uniq -c|sort -n

nginx.access.log 为日志文件,

会到如下结果,前面是ip的访问次数,后面是ip,很明显我们需要把访问次数多的ip并且不是蜘蛛的ip屏蔽掉,本例当中我们屏蔽掉

165.91.122.67

 ...
 13610 202.112.113.192
 95772 180.169.22.135
 337418 219.220.141.2
 558378 165.91.122.67

2.在nginx的安装目录下面,新建屏蔽ip文件,命名为blockip.conf,以后新增加屏蔽ip只需编辑这个文件即可。 加入如下内容

deny 165.91.122.67; 

保存一下。

3.在nginx的配置文件nginx.conf中加入如下配置,可以放到http, server, location, limit_except语句块,需要注意相对路径,本例当中nginx.conf,blocksip.conf在同一个目录中。

include blockip.conf; 

4.重启一下nginx的服务:/usr/local/nginx/nginx -s reload 就可以生效了。

高级用法:

屏蔽ip的配置文件既可以屏蔽单个ip,也可以屏蔽ip段,或者只允许某个ip或者某个ip段访问。

# 屏蔽单个ip访问

deny IP;
# 允许单个ip访问

allow IP;
# 屏蔽所有ip访问

deny all;
# 允许所有ip访问

allow all;
#屏蔽整个段即从123.0.0.1到123.255.255.254访问的命令

deny 123.0.0.0/8
#屏蔽IP段即从123.45.0.1到123.45.255.254访问的命令

deny 124.45.0.0/16
#屏蔽IP段即从123.45.6.1到123.45.6.254访问的命令

deny 123.45.6.0/24

如果你想实现这样的应用,除了几个IP外,其他全部拒绝,
那需要你在blockip.conf中这样写

allow 1.1.1.1;
allow 1.1.1.2;
deny all;

单独网站屏蔽IP的方法,把include blocksip.conf; 放到网址对应的在server{}语句块,
所有网站屏蔽IP的方法,把include blocksip.conf; 放到http {}语句块。

屏蔽访问过于频繁的IP脚本需要根据实际的nginx log 格式,修改,取出 访问IP 和User-Agent.
在nginx配置文件中添加一条配置

include ./vhost/blockip.conf;

脚本内容:

#!/bin/bash
   nginx_home=/usr/local/webserver/nginx
   log_path=/usr/local/webserver/nginx/logs
   tail -n50000 /usr/local/webserver/nginx/logs/access.log \
   |awk '{print $1,$12}' \
   |grep -i -v -E "google|yahoo|baidu|msnbot|FeedSky|sogou" \
   |awk '{print $1}'|sort|uniq -c|sort -rn \
   |awk '{if($1>1000)print "deny "$2";"}' >$nginx_home/conf/vhost/blockip.conf
   /etc/init.d/nginx reload

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索nginx
, ip
, 配置
nginx配置
nginx流媒体服务器、nginx 图片服务器、nginx 文件服务器、nginx服务器搭建、nginx 静态文件服务器,以便于您获取更多的相关知识。

时间: 2024-11-05 12:21:25

在Nginx服务器上屏蔽IP的一些基本配置方法分享_nginx的相关文章

Nginx服务器作反向代理时的缓存配置要点解析_nginx

这里给出示例,并详解. http { [...] [...] proxy_cache_path /data/nginx/cache/one levels=1:2 keys_zone=one:10m max_size=10g; proxy_cache_key "$host$request_uri"; server { server_name www.jb51.net jb51.net; root /home/www.jb51.net/web; index index.php index.

通过Nginx服务器获取大文件MD5值的配置方法_nginx

HTTP协议新增了Content-MD5 HTTP头,但是nginx并不支持这个功能,而且官方也明确表示不会增加这项功能,为什么呢?因为每次请求都需要读取整个文件来计算MD5值,以性能著称的nginx绝对不愿意干出违背软件宗旨的事情.但是有些应用中,需要验证文件的正确性,有些人通过下载当前文件,然后计算MD5值来比对当前文件是否正确.不仅仅浪费带宽资源也浪费了大把的时间.有需求就有解决方案,网友开发了file-md5模块.1. 下载模块file-md5 # cd /usr/local/src #

5种nginx负载均衡配置方法分享_nginx

一.轮询(默认)  每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除.  二.weight 指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况.  例如:  复制代码 代码如下: upstream bakend {  server 192.168.0.14 weight=10;  server 192.168.0.15 weight=10;  } 三.ip_hash 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,

CI在Nginx服务器上rewrite去掉index.php例子

CI框架在nginx服务器上配置rewrite去掉index.php的方法: vim /usr/local/webserver/nginx/conf/nginx.conf 实例配置代码:  server   {     listen       80;     server_name  www.111cn.net;     index index.html index.htm index.php;     root  /data0/htdocs/lamp100;       #nginx去掉in

asp.net检查服务器上目录或文件是否存在的方法_实用技巧

本文实例讲述了asp.net检查服务器上目录或文件是否存在的方法.分享给大家供大家参考.具体方法分析如下: asp.net为我们提供了文件系统对象了,对于目录与文件判断是否存在我们有System.IO.File.Exists与System.IO.Directory.Exists即可,下面看两个应用实例. 判断文件是否存在: 复制代码 代码如下: using System.IO;  // 还需要命名空间,别忘了 if (System.IO.File.Exists("c:aaa.txt")

禁止IP访问网站的多种方法分享(linux,php,nginx,apache)_服务器其它

PHP禁止某个IP或IP段访问 废话不多说,客官请看: <? //禁止某个IP $banned_ip = array ( "127.0.0.1", //"119.6.20.66", "192.168.1.4" ); if ( in_array( getenv("REMOTE_ADDR"), $banned_ip ) ) { die ("您的IP禁止访问!"); } //禁止某个IP段 $ban_ran

Nginx服务器上搭建图片缓存服务的基本配置解析_nginx

最近准备用nginx搭建了一个图片服务器,看中的就是nginx超强的静态文件处理能力. 由于图片量比较大,和web服务器(也是nginx)分开运行,虽然web服务器调用图片没用问题,但毕竟是远程调用,肯定没有本地文件系统那么快,因此仍然有优化的空间. proxy_store使用前的nginx配置 location ~* ^.+\.(js|ico|gif|jpg|jpeg|png|html|htm)$ { log_not_found off; access_log off; expires 7d;

Nginx服务器上安装并配置PHPMyAdmin的教程_php技巧

一. 准备工作: 1. 如果mysql的root账号为空,需要设置root密码 CentOS下默认安装的mysql服务器,里面的root账号默认密码为空,首先为root设置一个密码 #mysqladmin -u root password yourpassword *注: 虽然通过一些特殊配置,可以使phpmyadmin允许空密码登录,但是不推荐这样做,尤其是公网的服务器. 2. 设置php.ini正确配置session.save_path 1). 首先检查php.ini配置文件 #grep s

在Nginx服务器上安装配置博客程序Typecho的教程_nginx

typecho比wordpress更轻,更专注于写的享受. 现在大多的虚拟机运行环境都是lnmp,安装教程安装typecho可能会遇到404,数据配置错误问题. 把这两天安装typecho的步骤写下来给大家参考. typecho安装方法 1.下载 #网站目录 cd /usr/local/nginx/html/ wget https://github.com/typecho/typecho/releases/download/v0.9-13.12.12-release/0.9.13.12.12.-