在CloudFront自定义分发版后使用WordPress

时间:2011-04-07 作者:TiernanO

我刚刚使用自定义分发API在Cloudfront分发之后运行了我的站点,但现在我无法使用标准的旧地址登录该站点(因为我使用了DNS)。我将其连接的方式如下:

backendblog-real serverblog-要求云前端分发从backendblog获取数据

访问博客会导致页面被返回(而且速度也很快!)但所有的动态功能(搜索、登录等)都不起作用。评论很有用,因为它们是由Disqus管理的。

因此,我有两个问题:

1: 我如何设置它,以便backendblog允许我登录而不重定向到博客(如果我设置配置,它会更改所有URL…希望URL是页面加载的任何站点的URL…)2: 如何将页面配置为具有更高的过期时间,以便它们在CloudFront中停留的时间更长?

有人试过这个吗?

作为参考,该网站是博客。LotusSmartman。net(clodfront)或backendblog。LotusSmartman。net(德国专用盒子)。上周,随着cloudfront的出现,Pingdom平均响应时间大幅下降。。。

2 个回复
SO网友:Andrew Shell

我一直在研究同一个问题。您需要做的是有两个域。一个用于后端博客,另一个指向cloudfront。您的backendblog将被配置为充当其自身(backendblog)。在我的测试示例中,我使用blog 作为后端博客。

如果这是用于生产,您可能会content.example.com 作为后端博客和www.example.com 作为cloudfront。然后在我的example.

棘手的部分是编写一个插件,在收到cloudfront用户代理的请求时,将backendblog中的所有url重写为cloudfront url

<?php
/*
Plugin Name: CDN Rewrite
Plugin URI: http://blog.andrewshell.org/cdnrewrite
Description: Rewrite urls on page if behind a CDN
Author: Andrew Shell
Version: 1.0.0
Author URI: http://blog.andrewshell.org/
*/

if (0 == strcmp($_SERVER[\'HTTP_USER_AGENT\'], \'Amazon CloudFront\')) {
  $now     = time();
  $expires = strtotime(\'+1 hour\', $now);
  header("Expires: " . gmdate(DATE_RSS,$expires) . "\\n");

  add_filter( \'home_url\', \'cdnrewrite_url\', 100, 4 );
  add_filter( \'site_url\', \'cdnrewrite_url\', 100, 4 );
}

function cdnrewrite_url( $url, $path, $orig_scheme, $blog_id )
{
  return str_replace(\'blog.andrewshell.org\', \'d11b8ym2xu437t.cloudfront.net\', $url);
}
当您想要编辑帖子并直接登录到backendblog时,它不应该重定向,因为它被配置为backendblog(不是cloudfront url),但来自cloudfront的所有请求都将得到更正,因此链接保留在CDN域上。

这并不完美,如果你查看我的cloudfront url的源代码,你会看到一些对我的backendblog的引用,但这是你想往下看的思路。下一步可能是更改插件以捕获输出缓冲区中的所有输出,并在返回之前对其执行str\\u替换。

SO网友:xaedes

您提到希望将URL更改为页面加载到的任何站点。

也许你可以pre_option_siteurlpre_option_home 并动态返回您来自的url。

http://codex.wordpress.org/Plugin_API/Filter_Reference/pre_option_(option_name)

结束

相关推荐

带有WordPress的CDN选项,包括支持插件?

有什么问题options for Content Distribution Networks for use with WordPress? 我想了解他们的客观利弊,他们的相关插件或其他利用它们的方式,他们的相对定价,他们适当的客户档案/场景/用例,他们使用过的项目(如果你知道的话),以及任何其他相关信息。This is a community wiki 因此,请仅为每个答案提供一个CDN选项,请不要重复答案。如果您有关于已列出CDN的内容,请编辑答案或添加评论。和please vote up the