Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用CloudFlare“;灵活的SSL“;使用Nginx页面速度过滤器_Ssl_Nginx_Https_Pagespeed_Cloudflare - Fatal编程技术网

如何使用CloudFlare“;灵活的SSL“;使用Nginx页面速度过滤器

如何使用CloudFlare“;灵活的SSL“;使用Nginx页面速度过滤器,ssl,nginx,https,pagespeed,cloudflare,Ssl,Nginx,Https,Pagespeed,Cloudflare,我刚刚开始使用CloudFlare“灵活的SSL”,这允许用户在连接到我的服务器时使用SSL(当然是通过CloudFlare) 以下是请求的处理方式: 访问者CloudFlare我的服务器(Nginx w/pagespeed) 当Nginx重写我的资源(css、js、JPEG等)时,问题就来了,Nginx总是从CloudFlare接收http请求,因此很明显Nginx以http(html)的形式返回资源,当用户尝试加载资源时,他们的浏览器上会出现一个丑陋的图标,警告不安全的内容,或者根本不加载不

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

以下是请求的处理方式:

访问者CloudFlare我的服务器(Nginx w/pagespeed)

当Nginx重写我的资源(css、js、JPEG等)时,问题就来了,Nginx总是从CloudFlare接收http请求,因此很明显Nginx以http(html)的形式返回资源,当用户尝试加载资源时,他们的浏览器上会出现一个丑陋的图标,警告不安全的内容,或者根本不加载不安全的内容,完全破坏页面

以下是我目前使用的过滤器:
pagespeed启用过滤器将css移到脚本上方,将css移到头部,重写样式属性,组合javascript,插入图像尺寸,折叠空白,精灵图像,插入‌​ert_dns_预取

那么,如何使nginx pagespeed以https的形式返回资源呢?当请求是http时,如何作为非https


谢谢。

只要CloudFlare发送标准的
X-Forwarded-Proto
头,您就可以通过简单地启用:

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


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

只要CloudFlare发送标准的
X-Forwarded-Proto
头,您就可以通过简单地启用:

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


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

重写资源?什么意思?你使用了一些输出过滤器吗?@MichaelTabolsky是的,这些是我目前使用的过滤器:
pagespeed EnableFilters将css移到脚本上方,将css移到头部,重写样式属性,合并javascript,插入图像维度,折叠空白,精灵图像,插入‌​ert_dns_预取。当nginx将这些资源的链接放在html中时,问题就来了,总是使用http.mm,很抱歉,从来没有使用过这些链接。但我怀疑一定有一些url重写。此外,您可以尝试在URL中省略模式。无法说明它是否在任何情况下都能工作,但我看到src=“//host.name/uri”经常写入资源?什么意思?你使用了一些输出过滤器吗?@MichaelTabolsky是的,这些是我目前使用的过滤器:
pagespeed EnableFilters将css移到脚本上方,将css移到头部,重写样式属性,合并javascript,插入图像维度,折叠空白,精灵图像,插入‌​ert_dns_预取。当nginx将这些资源的链接放在html中时,问题就来了,总是使用http.mm,很抱歉,从来没有使用过这些链接。但我怀疑一定有一些url重写。此外,您可以尝试在URL中省略模式。无法说明它是否在任何情况下都有效,但我看到src=“//host.name/uri”第一个选项通常不起作用,第二个选项似乎只在不同的分支中可用:/经过几个小时的过滤器和大量设置后,我发现我需要使用
MapOriginDomain
(http-to-https重写资源)使用
respectForwardedProto
。第一个选项不起作用,第二个选项似乎只在另一个分支中可用:/经过几个小时的过滤器和大量设置,我发现我需要使用
MapOriginDomain
(http-to-https重写资源)分别使用
正向协议
    pagespeed RespectXForwardedProto on;
    pagespeed PreserveUrlRelativity on;