前几天突然发现,资源负载过高,CPU占用100%,内存占用100%。这种情况,一般是被攻击导致,因为我用了WP Super Cache,普通页面都是静态的,不可能出现这种资源占用过高的情况。这种情况,就要远程登录一下终端,输入命令top,通过Shift+.或者Shift+,来判断下哪个进程占用极高。
当然,如果资源占用太高,导致无法远程连接终端(SSH登录),你可能需要在服务器后台哪里重启一下服务器,然后再远程登录。然后再看top命令的输出结果。

实测中,我发现Memcached进程占用极高,这个是内存缓冲插件。大致就可以判断问题:有人疯狂在网站内用随机字符串搜索关键词,导致频繁查找内存数据,Memcached再缓冲进内存里。这要,就导致网站占用极高。这种情况,目前只能禁用Wordpress自带搜索来防止这种攻击手段。
除此之外,你也要查看网站运行日志问题,查看是否被大量CC攻击。防CC攻击,网上方法有很多,这里就不再一一介绍了。
本文主要给出如何屏蔽Wordpress自带搜索功能,以及替换为百度/必应/谷歌站内搜索的方法。其中,站内搜索即,在百度/必应/谷歌等搜索引擎内只搜索本站资源。
下面,正式开始教程:
在主题目录function.php中加入如下功能,禁用WordPress自带搜索:
//禁用WordPress前台搜索功能
function disable_search( $query, $error = true ) {
if (is_search() && !is_admin()) {
$query->is_search = false;
$query->query_vars['s'] = false;
$query->query['s'] = false;
if ( $error == true )
// 执行搜索后显示的错误页面
// $query->is_home = true; //跳转到首页
$query->is_404 = true;//跳转到404页
}
}
add_action( 'parse_query', 'disable_search' );
add_filter( 'get_search_form', function($a){return null;});在主题目录header.php中,找到搜索功能性代码,替换为如下站内搜索代码:
<form class="navbar-search" action="https://www.bing.com/search" target="_blank" id="SearchForm">
<script type="text/javascript">
function changeAction(){
var str=document.getElementById("SearchType").value;
if(str=="BD"){
document.getElementById("SearchForm").action="https://www.baidu.com/baidu";
document.getElementById("InputName").name="wd";
document.getElementById("site").name="si";
document.getElementById("site").value="iymark.com";
}else if(str=="BG"){
document.getElementById("SearchForm").action="https://www.bing.com/search";
document.getElementById("InputName").name="q";
document.getElementById("site").name="q1";
document.getElementById("site").value="site:iymark.com";
}else{
document.getElementById("SearchForm").action="https://www.google.com/search";
document.getElementById("InputName").name="q";
document.getElementById("site").name="domains";
document.getElementById("site").value="iymark.com";
document.getElementById("site1").value="iymark.com";
}
}
</script>
<div class="navbar-search-inner">
<?php WPCOM::icon('close', true, 'navbar-search-close');?>
<select class="search-type" id="SearchType" onchange="changeAction()">
<option value="BG">必应</option>
<option value="BD">百度</option>
<option value="GG">谷歌</option>
</select>
<input type="text" class="navbar-search-input" name="q" size="12" id="InputName" placeholder="输入关键词进行站内搜索">
<input name=q1 type=hidden value="site:iymark.com" id="site">
<input name=tn type=hidden value="bds">
<input name=cl type=hidden value="3">
<input name=ct type=hidden value="2097152">
<input type=hidden name=sitesearch value="iymrak.com" id="site1">
<button class="navbar-search-btn" type="submit"><?php WPCOM::icon('search');?></button>
</div>
</form>
请注意,如上代码中出现的iymark.com为本站域名,需要自行更换为你自己的域名。并且你需要确保百度/必应/谷歌对你网站的收录是正常的,否则站内搜索就没有任何意义了。
实际的效果,可以点击本站导航菜单中的搜索功能来体验。
最后,提一下我是怎么保证网站安全得:
[vk-content]
由于我没用过宝塔,目前自己正在琢磨着使用modsecurity来保证服务器安全,并且已经开始使用了。
如果你感兴趣,可以询问我具体如何操作
[/vk-content]
原创文章,作者:古哥,转载需经过作者授权同意,并附上原文链接:https://iymark.com/articles/1479.html

微信扫一扫
支付宝扫一扫


评论列表(2条)
古哥,你站点的百度搜索失效了,有空看看呗 然后求最新的代码
@剑心:看了下,我网站用的没失效啊