前几天突然发现,资源负载过高,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条)
古哥,你站点的百度搜索失效了,有空看看呗 然后求最新的代码
@剑心:看了下,我网站用的没失效啊