在此documentation 和this one 中检查https 字符串。
您应该在问题中向我们展示您当前的ModPagespeedMapOriginDomain && ModPagespeedDomain 设置。
根据我从这些方面的理解:
origin_specified_in_html可以指定https,而origin_to_fetch_from只能指定http,例如
ModPagespeedMapOriginDomain http://localhost https://www.example.com
该指令允许服务器接受 www.example.com 的 https 请求,而不需要 SSL 证书来获取资源 - 事实上,这是 mod_pagespeed 可以服务 https 请求的唯一方式目前它不能使用 https 来获取资源。例如,给定上述映射,并假设 Apache 配置为支持 https,mod_pagespeed 将获取和优化使用 https://www.example.com 访问的资源,从 http://localhost 获取资源,这可以是同一个 Apache 进程或不同的服务器进程。
还有这些:
mod_pagespeed 为通过 https 提供内容的网站提供有限的支持。有两种机制可以配置 mod_pagespeed 来服务 https 请求:
- 使用 ModPagespeedMapOriginDomain 将 https 域映射到 http 域。
- 使用 ModPagespeedLoadFromFile 将本地可用目录映射到 https 域。
解决方案是这样的(或带有ModPagespeedLoadFromFile 的解决方案)
ModPagespeedMapOriginDomain http://localhost https://www.example.com
但是,对你来说真正的问题是 apache 不直接接收 HTTPS 请求,因为硬件负载均衡器自己处理它。所以 mod-pagespeed 输出过滤器甚至不知道它是为 SSL 域请求的。而且当它修改HTML内容时,可能应用域重写,它无法处理https的情况。
所以...一个解决方案(未经测试)将在 apache 服务器上使用另一个虚拟主机,如果您愿意,仍然是 HTTP,专用于 https 处理。所有与 https 相关的 url (/login,/checkout,...) 都会被硬件负载均衡器重定向到这个特定的域名。假设http://secure.acb.com。此名称仅在负载均衡器和前端 apache 之间使用(当然 apache 应该限制对这个 VH 的访问仅限于负载均衡器)。
然后在这些http://secure.acb.com 虚拟主机中,mod_pagespeed 将被配置为在外部将域重写为https://www.example.com。比如:
ModPagespeedMapOriginDomain http://secure.example.com https://www.example.com
最终用户请求是https://www.example.com/login,负载均衡器管理HTTPS,与http://secure.example.com 的apache 对话,页面结果只包含对https://www.example.com/* 资产的引用。现在,当使用 https 域请求请求这些资产时,您仍然会遇到提供这些资产的问题。因此,硬件负载均衡器应该允许 https 域中的所有这些资产 url 并将它们发送到 http://secure.abc.com 虚拟主机(或任何其他静态 VH)。