RSS
 

Archive for 十月, 2010

用nginx的XSendfile特性,加速wordpress MU的附件访问速度

18

昨天发布了多人博客站点——博出位(bochuwei.com)。其中每个博客的附件地址,都是类似于这样的:http://shen2.cn/files/2010/10/xxx.jpg。

这样的附件地址,好处在于隐藏了实际路径中,wp-content/blogs.dir/?/的路径信息,缺点是原本直接通过nginx就能够返回文件,现在必须通过php。

更要命的是,php的readfile()函数效率不高,对于大文件来说,在返回结果之前,由php读取文件的全部内容,显然是没有必要的。

在ms-files.php的代码中,我找到了这样一段代码:

if ( WPMU_ACCEL_REDIRECT ) {
header( 'X-Accel-Redirect: ' . str_replace( WP_CONTENT_DIR, '', $file ) );
exit;
} elseif ( WPMU_SENDFILE ) {
header( 'X-Sendfile: ' . $file );
exit;
}

于是引发了我无限遐想。这个传说中X-Accel-Redirect是不是能够实现高速的文件重定向呢?

google了之后发现果然如此,可惜找不到任何的相关文档,仅有的一篇中文博客(http://tremblefrog.org/blog/2009/04/03/a_wpmu_hack_to_substitute_php_for_nginx_processing_static_files/),写得也不是很详细。

摸索了一下,原来是nginx提供了一个高级特性,叫XSendfile,用来读取header信息中的X-Accel-Redirect值,将X-Accel-Redirect所指定的文件内容,作为输出。
这样一来,php就不需要读取文件的正文,只需要输出X-Accel-Redirect值,就可以让nginx负责静态文件的传输了。

1. 在nginx的server配置中增加设置:

rewrite ^/files/(.+) /wp-includes/ms-files.php?file=$1;
location /blogs.dir/ {
internal;
root /wordpress/wp-content;
expires 30d;
}

2.在wp-config.php文件的尾部,增加:

define( 'WPMU_ACCEL_REDIRECT', true);

重启nginx之后,就生效了,是不是很酷?

 
 

博出位(bochuwei.com)上线啦!

17

博出位(bochuwei.com)是2010年9月,live space宣布即将关闭之后,我(沈振宇)为了帮助我的朋友们托管自己的博客而建立的基于wordpress多人博客网站。

博出位由我自己维护,仅提供给我的朋友们免费使用,不向公众开放。在我可预见的将来都将稳定运行下去,即使有一天我不能再维护这个网站,我也会将数据交回。

博出位的优势:

  1. 基于最流行的wordpress程序,拥有超强的功能
  2. 支持绑定顶级域名,也可以使用yourname.bochuwei.com的二级域名
  3. 精选了十多款最受欢迎的wordpress主题和插件,满足各种各样的自定制需求
  4. 完全独立于大网站,所有数据都在自己的手中,不再受到大公司兴衰的影响。
  5. 独立服务器,而不是虚拟主机,不必担心被同服务器的其他人牵连。托管在北京电信通BGP多线机房,全国各地,不论是电信、网通、教育网还是国外,都能够高速访问。

如何开通博客?

给我发邮件(zhenyupku AT gmail.com),说明你的博客想使用的域名和你的用户名,我会给你回复邮件开通博客。当然,前提是你认识我,并且我认识你。

如何搬家到博出位?

  1. 对于即将关闭的live space,建议先按照官方提供的流程搬家到wordpress.com
  2. 然后在wordpress.com的管理后台,点击“工具->导出”,将你的博客导出成WXR文件
  3. 登录博出位的管理后台,点击“工具->导入”,上传WXR文件导入

博出位的资金来源、商业模式、发展计划、和图虫是什么关系?

博出位的维护费用由我自己支付。博出位是纯粹的个人网站,没有商业模式,也不打算挣钱。博出位和图虫没有关系。

注意事项:

  • 请勿书写政治敏感信息
  • 如果使用顶级域名,请尽快备案

已经开通的样例:

 
No Comments

Posted in 创业