July 2011

基于wp 的blog 遭遇一次自杀式攻击

微博的名人确实有杀伤力啊,周五的时候,Kaifu 老师的微博转了一下公司的博客地址,结果访问一下子涌过来了。5000 的访问里有3000+ 是访问 / ,wp 的 / 是动态的啊,难怪撑不住,load1m 飙到50 ,20 个php-fpm 忙得不行。我把这类都归结于自杀式攻击,其实,很多时候,弄死我们的,都是自己啊。

解决也不是很难,静态化吧。curl 一个首页放到wp 的文件夹里,命名为 index.htm ,顺便改改 nginx 的配置:

if ($uri = “/”){
rewrite “^/$” /index.htm break ;
}
完事,load1m 迅速下降到1 以下了。

处理这个事情的时候我正在打火锅呢,其实还想做得更完美一点的,静态化的首页,也能定时更新一下,但发现没那么简单,就放弃了。就放下去吃火锅了,天杀的谁想出来在这么热的天时吃火锅的!!

其实最好的做法就是,用 wp 的 wp super cache 插件。

tmux 下的vim 无法使用系统剪切板

Mac 下的vim 实在难用,连+python 都没有,自己重新编译是在所难免的了。最近使用中,发现,编译还得加上gtk 支持才行了。

vim 可以使用系统的剪切板,在vimrc 中加入

set clipboard=unnamed

即可。

但是,我发现,在 tmux 下的vim ,这个配置会导致,vim 完全不能复制粘贴,爆这个错:

E353: Nothing in register *

当前的vim :

$ vim –version | grep clipboard
-clientserver +clipboard +cmdline_compl +cmdline_hist +cmdline_info +comments
-xterm_clipboard -xterm_save
猜想,和 xterm_clipboard 有关吧,尝试把它编译进去。
port install vim +python27 +ruby +gtk2
编译需时间啊,gtk 啊!伤不起啊!!经过多个小时以后,才完成。。。当然也和我的烂网速有关。

好了,编译完成的vim 应该是以下这这样子:

$ vi –version | grep clipboard

+clientserver +clipboard +cmdline_compl +cmdline_hist +cmdline_info +comments

+xsmp_interact +xterm_clipboard -xterm_save

nginx+apache+dav_svn 的怪异问题

最近帮朋友的网站做个小优化,由apache 迁移到nginx ,结果问题多多,svn 在提交的时候竟然有这个错误:

$ svn ci -m”fix the mail problem “
Sending        util.php
svn: Commit failed (details follow):
svn: File ‘util.php’ is out of date
svn: ‘/svn/!svn/bc/496/trunk/util.php’ path not found
但是提交其它文件貌似没有问题。怪异到爆!!!

首先说说nginx 的配置。

svn 仍然使用 apache 的dav_svn ,只是端口由80 改为 1234,其它配置不改。

location  /svn {

proxy_pass http://127.0.0.1:1234 ;

proxy_set_header Host “svn.mysite.net” ;

}

终于在google 大神找到一篇俄文的mailing-list(http://www.lexa.ru/nginx-ru/msg39625.html),竟然有人和我同样的错误,也终于弄清楚什么事了。。。简直是自己白痴!!
我的php 的配置:
location ~ \.php$ {
root           /var/www/backend/  ;
fastcgi_pass   127.0.0.1:9000;
fastcgi_index  index.php;
include        fastcgi.conf;
}
这个location 用了正则匹配,比svn 的普通location 优先级高,结果svn 提交util.php 的时候(会发送一堆svn 的指令如propfind , option 等),优先到php 的location 里,结果就出错了。。。
那svn 也用高优先级的location 匹配吧,修改一下,用前缀匹配:
location ^~ /svn
ok , 成功了。。。
事后我才看到,nginx 本身就有一个404 的log :
211.102.143.12 – hello [03/Jul/2011:15:34:53 +0800] “PROPFIND /svn/!svn/bc/496/trunk/util.php HTTP/1.1″ 404 31 “-” “SVN/1.6.15 (r1038135) neon/0.28.6″ “-“
唉。。。怪自己~~