分类 默认分类 下的文章

方法一:
将下面的内容保存到nginx.conf同级目录,比如:deny1.conf

# 针对单个ip的形式
deny 171.94.171.205;
deny 115.29.166.101;
deny 182.247.251.48;
deny 61.147.89.17;

# 针对网段的形式
deny 66.249.227.0/24;

然后在nginx.conf 的 http 段 引入这个文件,重启生效(注意这个是整体全部的网站配置的禁止这些IP访问了,谨慎使用):

include deny1.conf; 

方法二:
有针对性的阻止,比如有些人工的发起请求,或许其他的你不想要的访问,通常是异常的客户端UA,可以这么做:

将下面的内容也保存到一个文件,也是nginx.conf同级目录,比如:deny2.conf

#禁止常用工具的抓取
 if ($http_user_agent ~* "Scrapy|Curl|HttpClient|Java") {
  return 403;
 }
 #禁止指定UA及UA为空的访问
 if ($http_user_agent ~* "Baidu-YunGuanCe|FeedDemon|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|YisouSpider|MJ12bot|heritrix|EasouSpider|LinkpadBot|Ezooms|^$" ) {
  return 403;
 }

这里注意需要把里面的正则表达式修改成你需要的正则表达式,以免达不到你要的效果

然后在nginx.conf 的 server 段(也就是某个网站的配置而不是http段) 引入这个文件,重启生效:

http{
   ...
   server {
       ...
       include deny2.conf;
       ...
   }
   ...
}

先测试有没有配置错误

nginx -t

再重启服务

nginx -s reload 

Xshell 56 评估过期,需要采购,不能使用的解决办法,其实有免费的版本可以用,不需要去下载什么破解版,真的不安全,容易被人置后门,中毒什么的。

那么我们怎么办,下载免费的授权,很多开发者不知道,我也是今天到期了才找到的。

直接进入官网免费的授权页面: https://www.netsarang.com/download/free_license.html

下载 xshell 或者 xftp ,这个页面的下载是免费版的,点完下载会出现一个填写资料的页面,填写自己的姓名和邮箱就可以了,会把下载软件的地址发到你的邮箱,从邮箱进去点击下载软件,安装好就可以用。

最新版还可以,更新了不少的功能,非常赞。。

谢谢看我在这BB了。

感谢老铁无私的分享
插件出处:http://www.yzmb.me/archives/net/audio-player-for-typecho

我们有时候会把日志数据写入数据库,如果该表不能自动备份,表中的数据会越来越多,影响速度。可以定期将表中数据备份到另外一个表中来解决。

解决方案1
使用MySQL中的存储过程+事件解决。

假设你的日志表名:operationlog

存储过程逻辑为:
  1)创建一个新表operationlog_temp,各字段同operationlog相同;
  2)将表operationlog更名为operationlog_yyyy-mm-dd;
  3)将表operationlog_temp更名为operationlog

事件逻辑为:
  1)每个3个月定时调用一次存储过程bakOpLog

注意:开始事件功能(MySQL必须先开启事件功能,才能使用事件)。

查看当前是否已开启事件计划(调度器)有3种方法:
1) SHOW VARIABLES LIKE ‘event_scheduler’;
2) SELECT @@event_scheduler;
3) SHOW PROCESSLIST;

开启事件计划(调度器)开关有4种方法:重启就会销毁
1) SET GLOBAL event_scheduler = 1;
2) SET @@global.event_scheduler = 1;
3) SET GLOBAL event_scheduler = ON;
4) SET @@global.event_scheduler = ON;

1、定义存储过程bakOpLog:

CREATE DEFINER=`sa`@`%` PROCEDURE `bakOpLog`()
BEGIN
create table operationlog_temp like operationlog;
set @i=current_date();
--执行rename table operationlog to operationlog_yyyy-mm-dd
set @sqlstr=CONCAT('rename table operationlog to `operationlog_',cast(@i as char),'`');
select @sqlstr;
PREPARE renameOpLog FROM @sqlstr;
EXECUTE renameOpLog;
rename table operationlog_temp to operationlog;
END;

2、定义事件callProcedureBakOpLog

CREATE DEFINER=`sa`@`%` EVENT `callProcedureBakOpLog` ON SCHEDULE EVERY 1 DAY STARTS '2014-12-30 00:00:00' ENDS '2015-01-06 00:00:00' ON COMPLETION PRESERVE ENABLE DO call bakOpLog();

3、存储过程用到的一些语法

set @i=current_date();  //将全局变量i赋值为当前日期
set @sqlstr=CONCAT('rename table operationlog to `operationlog_',cast(@i as char),'`'); //sqlstr=rename table operationlog to operationlog_yyyy-mm-dd
PREPARE renameOpLog FROM @sqlstr;   //定义预处理语句
EXECUTE renameOpLog;    //执行预处理语句

查看创建的事件

SHOW EVENTS;

也可以在mysql库中产看event表

1) 临时关闭事件

ALTER EVENT e_test DISABLE;

2) 开启事件

ALTER EVENT e_test ENABLE;

3) 将每天清空test表改为5天清空一次:

ALTER EVENT e_test
ON SCHEDULE EVERY 5 DAY;

4) 删除事件(DROP EVENT)

DROP EVENT [IF EXISTS] event_name

例如删除前面创建的e_test事件

DROP EVENT e_test;

当然前提是这个事件存在,否则会产生ERROR 1513 (HY000): Unknown event错误,因此最好加上IF EXISTS

DROP EVENT IF EXISTS e_test;