Prerender不使用Nginx处理https

时间:2014-05-26 05:54:10

标签: nginx prerender

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

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

2 个答案:

答案 0 :(得分:1)

prerender处理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自动处理

答案 1 :(得分:0)

除了Prerender之外,你可以为每个人做一个简单的重写规则。

set $prerender 0;
if ($http_user_agent ~* "prerender") {
  set $prerender 1;
}
if ($prerender = 0) {
  return 301 https://$host$request_uri;
}