6

我在 Nginx 上运行的应用程序中包含 prerender 时遇到问题,我已经定义了一个简单的规则,用于将所有 http 请求重写为 https ,但是 prerender 在 GoDaddy 证书上运行 https 时遇到了一些问题,它会缓存页面但内容是空白的。我已经在 http 上对其进行了测试,它工作正常,我现在正在尝试的是,如果我http_user_agent是 Prerender,我想保持 http url 完整,否则将 url 重写为 https。

欢迎任何帮助/意见/建议。

4

2 回答 2

1

预渲染处理 https 重定向时遇到了同样的问题。在我们的例子中,快速的解决方案是在 prerender-node 配置中强制使用 https 协议(我假设任何其他中间件都应该存在这样的选项)。

var prerender = require('prerender-node');
prerender.protocol = 'https';

但是毕竟好像是nginx配置错误造成的,没有通过x-forwarded-proto头,否则应该由中间件自动处理https://github.com/prerender/prerender-node/blob/master /index.js#L235-L237

于 2016-08-29T16:52:01.680 回答
0

您可以为除 Prerender 之外的所有人执行简单的重写规则。

set $prerender 0;
if ($http_user_agent ~* "prerender") {
  set $prerender 1;
}
if ($prerender = 0) {
  return 301 https://$host$request_uri;
}
于 2014-05-26T16:20:44.147 回答