Total Pageviews

Friday, 17 February 2012

用Apache 给(海盗湾)网站做反向代理



反向代理的问题,在我以前的Wordpress 博客上说过,当时用的 nginx。参考:给 wordpress.com 博客做反向代理
反向代理配置本身不麻烦。问题是如何保证其它链接不会链到原始网站。上面的文章只考虑单域名,用 nginx 中的 sub_filter 指令做了域名替换。
Apache 做反向代理,也是类似的处理方式。不过 Apache 似乎没有一个自带的模块(所谓自带,就是 apt-get 下来就有的) 专门做文本替换的事情。仔细Google + 翻文档,发现Apache 有个更强大的 Filters 系统, 其中,可以自定义数据流的过滤方式。我把我的海盗湾的 vhost 配置拿出来,大家就明白了。
ServerAdmin liruqi@gmail.com
ServerAlias thepiratebay.liruqi.info 
ServerAlias tpb.liruqi.info 
ServerName thepiratebay.org

ExtFilterDefine FIXDOMAIN mode=output intype=text/html cmd="/bin/sed s/thepiratebay\.org/tpb\.liruqi\.info/g"

Order Allow,Deny
Allow from all
 
RequestHeader unset Accept-Encoding
SetOutputFilter FIXDOMAIN 
 
ProxyPass       /  http://thepiratebay.org/
ProxyPassReverse       /  http://thepiratebay.org/

这里定义的是用外部 sed 命令做文本替换。其实你自己用 C 写一个程序,读 stdin,写 stdout,也可以拿来用(但是会更有成就感吧 > <)。
还有一个细节,用 nginx 做 reverse proxy 也遇到的问题:从back-end server 读数据不要读 gzip 压缩的,把 Accept-Encoding 的 http 头干掉,就万事大吉了。
欢迎大家使用我的海盗湾
from http://liruqi.info/post/13502439999/reverse-proxy-for-tpb

No comments:

Post a Comment