Phusion Passenger http到https导致重定向循环

时间:2017-03-06 06:58:44

标签: nginx docker passenger

我尝试将所有HTTP流量重定向到HTTPS,但最终会进入重定向循环。

我做错了什么或者我错过了什么?

server {
  listen 80;
  return 301 https://test.website.com;
}

server {
  listen 443 ssl;
  server_name test.website.com;

  passenger_enabled on;
  passenger_user app;
  passenger_ruby /usr/bin/ruby2.3;

  root /home/app/webapp/public;

  ssl on;
  ssl_certificate /etc/ssl/certs/tls.crt;
  ssl_certificate_key /etc/ssl/private/tls.key;
}

仍然不确定出了什么问题。没有重定向。 HTTP和HTTPS有效。 HTTPS服务器在重定向时没有做什么。

server {
  listen 80;
  server_name test.website.com;

  passenger_enabled on;
  passenger_user app;
  passenger_ruby /usr/bin/ruby2.3;

  root /home/app/webapp/public;
}

server {
  listen 443 ssl;
  server_name test.website.com;

  passenger_enabled on;
  passenger_user app;
  passenger_ruby /usr/bin/ruby2.3;

  root /home/app/webapp/public;

  ssl_certificate /etc/ssl/certs/tls.crt;
  ssl_certificate_key /etc/ssl/private/tls.key;
}

2 个答案:

答案 0 :(得分:0)

我猜您的应用程序配置错误,仍然会将重定向发回http

您的httphttps规则始终将其发送回根目录。你应该做两件事。

在保留原始URI的同时从http转发到https

return 301 https://$host$request_uri;

有关详细信息,请参阅this document

使用浏览器端工具箱或插件分析HTTP Location:响应标头,以确定此重定向循环的性质。有关详情,请参阅this link

答案 1 :(得分:0)

您可以尝试使用https://www.digitalocean.com/community/questions/http-https-redirect-positive-ssl-on-nginx

上提供的代码
server {
       listen         80;
       server_name    my.domain.com;
       return         301 https://$server_name$request_uri;
}

server {
       listen         443 ssl;
       server_name    my.domain.com;

       [....]
}

希望这会有所帮助......