如何在Nginx PageSpeed过滤器中使用CloudFlare“Flexible SSL”

时间:2014-02-05 09:22:33

标签: ssl nginx https pagespeed cloudflare

我刚开始使用CloudFlare“灵活SSL”,这允许用户在连接到我的服务器时拥有SSL(当然是通过CloudFlare)。

以下是请求的结果:

访问者< - SSL - > CloudFlare < - 非SSL - > 我的服务器(Nginx w / pagespeed)

问题来自Nginx重写我的资源(css,js,jpegs等),nginx总是从CloudFlare收到一个http请求,所以显然Nginx将资源作为http(在html中)返回,当用户尝试加载时他们在浏览器上看到一个丑陋的图标,警告不安全的内容,或者不加载完全破坏页面的所有不安全的内容。

这些是我目前使用的过滤器:pagespeed EnableFilters move_css_above_scripts,move_css_to_head,rewrite_style_attributes,combine_javascript,insert_image_dimensions,collapse_whitespace,sprite_images,ins‌​ert_dns_prefetch;

那么如何让nginx pagespeed将资源返回为https?以及当请求是http时如何作为非https?

感谢。

1 个答案:

答案 0 :(得分:4)

只要CloudFlare发送标准X-Forwarded-Proto标头,您只需启用RespectXForwardedProto即可解决此问题:

    pagespeed RespectXForwardedProto on;

如果这不起作用,那可能意味着CloudFlare没有发送正确的X-Forwarded-Proto标头。如果是这样,您可以尝试启用PreserveUrlRelativity

    pagespeed PreserveUrlRelativity on;

将重写URL,但将它们保留为相对URL(以便它们同时使用HTTP和HTTPS)。