mod_pagespeed与亚马逊S3

时间:2017-02-28 00:56:00

标签: apache .htaccess amazon-s3 mod-pagespeed

我有一台运行apache的EC2服务器(www.example.com),mod_pagespeed已安装并正常工作。

我在Amazon S3存储桶(examplecdn.com)上托管了静态内容

当从https://www.example.com提供html时,有几个样式引用从https://examplecdn.com提供。

以下是从https://www.example.com

发送的一些示例html
<link rel="stylesheet" type="text/css" href="//examplecdn.com/assets/css/file_one.css"/>
<link rel="stylesheet" type="text/css" href="//examplecdn.com/assets/css/file_two.css"/>

我已阅读有关mod_pagespeed的文档,但我无法理解它。我希望将这两个请求重写为一个http请求。

我已确认使用wget可以从www.example.com服务器访问https://examplecdn.com/assets/css/file_one.css

我已将我的设置简化为使用.htaccess进行测试。我可以轻松打开和关闭简单的过滤器,而无需重启apache服务器。我正在尝试使用combine_css过滤器来尝试启动和运行基本设置。这是我的.htaccess文件:

ModPagespeed on
ModPagespeedEnableFilters remove_comments
ModPagespeedEnableFilters collapse_whitespace
ModPagespeedEnableFilters combine_css

我知道文档中提到了很多“域名”设置,但我不知道哪些可以解决问题。有人可以告诉我我需要对我的.htaccess文件做出哪些更改才能使其正常工作?

谢谢!

1 个答案:

答案 0 :(得分:2)

来自combine css docs:

  

过滤器不会将来自多个不同域的资源合并在一起,即使这些域都是由Domain授权的。它将来自多个不同域的资源合并在一起,这些域通过MapRewriteDomain映射在一起。

from here

  

该指令允许服务器接受www.example.com的https请求,而无需SSL证书来获取资源 - 事实上,这是PageSpeed可以为https请求提供服务的唯一方式,因为它目前无法使用https来获取资源。 / p>

ModPagespeedMapOriginDomain http://examplecdn.com/ https://examplecdn.com/

也许这对您有用,但为什么不将这些文件放在本地?无论如何,它们都将由您的Apache服务器提供服务。

[编辑]

经过测试,这种方式对我有用:

pagespeed on;
pagespeed RewriteLevel CoreFilters;

pagespeed Domain *.example.com;
pagespeed Domain https://s3.amazonaws.com/mybucket;
pagespeed MapOriginDomain http://localhost https://s3.amazonaws.com;
pagespeed EnableFilters combine_css;

使用nginx进行测试,但应该与Apache一样。如果映射的域位于云端,也应该没有区别。