Nginx 从http到https导致重定向循环

Nginx 从http到https导致重定向循环,nginx,docker,passenger,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.

我试图将所有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;
}

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

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

http
转发到
https
,同时保持原始URI:

return 301 https://$host$request_uri;
有关详细信息,请参阅


并使用浏览器端工具箱或插件来分析HTTP
位置:
响应头,以确定此重定向循环的性质。有关详细信息,请参阅。

您可以按照上的说明尝试此代码


希望这有帮助…

我猜我错过了位置指令和代理传递。我会进一步调查。不确定代理传递应该使用哪个URL。这是有意义的,我将进一步调查。我已经检查了应用程序,看起来还可以。我在上面添加了适用于HTTP和HTTPS的配置。位置标头显示了正确的重定向url。我不确定301重定向出了什么问题。我试过了,这是我在谷歌上看到的第一件事。我倾向于把它作为一个乘客问题。今晚晚些时候将尝试普通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;

       [....]
}