做这个的起因是之前 @annsherry_ 希望给自己的博客(http://annsherry.wordpress.com/) 绑定一个独立域名。我看了下后台配置,发现 wordpress.com 不让用A记录的方式配置,要想绑定域名,需要把自己的域名 nameserver 改成 wordpress的,让wordpress 帮你解析。作为一名互联网工作者,这种霸王条款当然是深深伤害了像我这种高端用户的感情。所以研究了一下用自己的主机给 *.wordpress.com 做反向代理的方法。
研究过程很纠结。我先把结论拿出来,然后大概解释下为什么。
比如,我希望把 annsherry.wordpress.com 绑定到 liruqi.me。步骤如下:
1. 重新编译 nginx, 加上 HttpSubModule(http://wiki.nginx.org/HttpSubModule) 模块。简而言之,是 ./configure 时加上参数 –with-http_sub_module 其它参数保持不变即可。
2. 修改Nginx 配置。在 http 块中加入 server:
server {
listen 80;
server_name liruqi.me;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Accept-Encoding ”";
proxy_pass http://annsherry.wordpress.com;
sub_filter annsherry.wordpress.com liruqi.me;
sub_filter_once off;
}
}
3. 启动 nginx 或者重新加载配置文件.
只要 域名 liruqi.me 是指向正确的主机ip, 反向代理就做好了。而且点链接不会跳回到 annsherry.wordpress.com 域名上。
大概说下原理。
a) *.wordpress.com 上的连接不少是绝对路径。如果直接proxy_pass ,再点一次连接就会回到 wordpress 域名上。所以这里做了一个简单的文本替换。
HttpSubModule 仅支持单模式的纯文本替换,不支持正则表达式。如果希望用正则,做一个更复杂的替换,可以考虑一个华人开发的 HttpSubsModule (http://wiki.nginx.org/HttpSubsModule) 第三方模块。
b) proxy_set_header Accept-Encoding ”"; 这一项,可以让nginx 不法送 Accept-Encoding HTTP header。这个时候,wordpress 返回的页面是不做 gzip压缩的。因为gzip 压缩之后,文本替换就会失效了。
国外有VPS的同学(而且ip没被墙的),可以考虑用类似的方式给自己的 blogspot 或者其它博客做反向代理。
另外,我现在没有给自己的 liruqi.com 做反向代理了(之前是反向代理到 appspot 上的 micolog),而是直接跳转到 http://liruqi.wordpress.com/。另外,我也建议大家少自己折腾搭建博客,不止一次见过把博客做在 VPS 上,然后因各种原因丢数据。而数据的价值,远大于技术本身。
—————————————————————————————————————————
需要翻墙利器赛风? 请阅读和关注中国数字时代。
推特用户请点击这里免翻墙上推特
请点击这里下载翻墙软件
更多翻墙方法请发电邮(最好用Gmail)到:fanqiang70ma@gmail.com
请阅读和关注中国数字时代、翻墙技术博客GFW BLOG(免翻墙)
没有评论:
发表评论