【问题标题】:Rewrite urls for cdn on http and https在 http 和 https 上重写 cdn 的 url
【发布时间】:2017-03-10 04:31:24
【问题描述】:

我们在 varnish 后面的多个 apache 节点上运行 mod-pagespeed,它位于处理 httpsngnix 后面。 所以所有请求都以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 作为协议。

我确实设置了一台本地机器(带有 docker)来测试这个本地并遇到同样的问题。您的 Pagespeed 适用于 http,不会为 https 重写 url。如果我使用调试过滤器,即使在 https 请求中也会添加调试信息,因此 Pagespeed 肯定会为这两种协议运行。

我也添加了the stats_log_global output as a pastebin herethe debug log output from the html here

如何让 pageSpeed 在 https 请求上也重写这些 url?

【问题讨论】:

    标签: apache https cdn mod-pagespeed


    【解决方案1】:

    我不太清楚你的域,正如你提到的 example.net 和 example.com,但它们没有出现在你的配置中。您是否通过 CDN 为自己和一些内容提供服务?

    您是否尝试过按照文档中的建议设置 ModPagespeedMapOriginDomain?看来您需要在前面添加协议才能使映射正常工作。

    https://developers.google.com/speed/pagespeed/module/https_support#map_the_origin

    您确定需要重写域吗?似乎映射原点就足够了。

    【讨论】:

    • example.net 和 example.com 是 examples
    • ModPagespeedMapOriginDomain 用于处理如何获取更改的数据(压缩等),而不是如何重写域。
    • 是的,我确实需要重写域。映射如何使最终用户从我的 cdn 加载数据?
    • 好吧,我还是不太清楚架构是什么。一切都是 HTTPS 吗?它只有一些页面。只有部分内容来自 CDN,还是全部来自 CDN?映射无济于事,但从您的问题中不清楚您没有遇到反向代理问题。
    • http 和 https 都存在。所有内容都在我们的服务器上。如果通过 cdn 调用任何资产 url,cdn 从我们的服务器复制它,缓存它并交付它。我的问题是:“我如何让 pageSpeed 在 https 请求上也重写这些 url?”。您认为反向代理可能是重写过程的问题吗?域重写过程不应该关心资产在哪里或如何正确访问它们?
    猜你喜欢
    • 1970-01-01
    • 2014-09-20
    • 2012-02-28
    • 2016-03-20
    • 2014-07-18
    • 2019-04-11
    • 2011-06-02
    • 2018-08-17
    • 2012-10-13
    相关资源
    最近更新 更多