我们在 varnish 后面的几个 apache 节点上运行 mod-pagespeed其位于 ngnix 后面它处理 https
。
所以所有请求都以 http
的形式到达 apache,但带有额外的 x-proto header .
PageSpeed 在 http
上工作正常,并将 url 重写到所需的 cdn 域,但在 https
请求中无法这样做。
设置:
ModPagespeedRespectXForwardedProto on
ModPagespeedDomain mycdn.azureedge.net
ModPagespeedMapRewriteDomain mycdn.azureedge.net *mydomain.com
mycdn.azureedge.net 是 cdn,mydomain.com 是我的网站。
我完整的 mod_pagespeed 配置 can be found here .
如果我确实将 ModPagespeedRespectXForwardedProto
设置为 off
,对于 https
请求,链接将重写到 cdn,但使用 http
作为协议(protocol)。
我确实设置了一台本地机器(带 docker)来测试这个本地并遇到同样的问题。你的 Pagespeed 对于 http 工作正常,url 不会为 https 重写。如果我使用调试过滤器,即使在 https 请求中也会添加调试信息,因此 Pagespeed 肯定会针对这两种协议(protocol)运行。
我添加了 the stats_log_global output as a pastebin here和 the debug log output from the html here
我如何让 pageSpeed 也重写 https 请求上的那些 url?
最佳答案
我不太清楚你的域,正如你提到的 example.net 和 example.com,但它们没有出现在你的配置中。您是自己提供内容还是通过 CDN 提供一些内容?
您是否尝试按照文档中的建议设置 ModPagespeedMapOriginDomain
?看来您需要在前端添加协议(protocol)才能使映射正常工作。
https://developers.google.com/speed/pagespeed/module/https_support#map_the_origin
您确定需要重写域吗?似乎映射原点就足够了。
关于apache - 在 http 和 https 上重写 cdn 的 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40285466/