Nginx重定向到SSL上的主域

Nginx重定向到SSL上的主域,ssl,nginx,Ssl,Nginx,我有两个相等的域,由虚拟主机提供服务,site.com和additional.com。我只有一个SSL证书的第一个,并没有真正想要它的另一个。当用户尝试登录时,我正在执行永久重定向: server { listen 443; server_name additional.com; rewrite ^/(.*) https://site.com permanent; } 这失败了,因为我将SSL流量代理到上行服务器,它无法处理它,因为它只与HTTP通信,并且有SSL23\u

我有两个相等的域,由虚拟主机提供服务,
site.com
additional.com
。我只有一个SSL证书的第一个,并没有真正想要它的另一个。当用户尝试登录时,我正在执行永久重定向:

server {
  listen   443;
  server_name  additional.com;
  rewrite ^/(.*) https://site.com permanent;
}

这失败了,因为我将SSL流量代理到上行服务器,它无法处理它,因为它只与HTTP通信,并且有
SSL23\u get\u server\u HELLO:unknown protocol
(对于Chrome;Firefix和curl有稍微不同的错误消息)。 所以我不得不将它改为(注意http,这里不是https):

错误不再出现,但当转到/login页面(应该是安全的,上行重定向到HTTPS)时,不会重写,表明证书无效。如果您确认安全异常,您将被重定向到
site.com
登录页,需要再次单击
login
链接


如何从
https://additional.com/login
指向
https://site.com
正确吗?

如果您想从HTTPS重定向到HTTPS,恐怕在旅程的每一步都需要SSL证书。没有办法解决这个问题——至少可以消除你的错误

也就是说。。。对于所有重写,请尝试以下操作:

rewrite ^/(.*) https://site.com/$1 permanent;

这将保持路径的使用。

我已经发现所有
443
都应该是
443 ssl
,并且重写工作正常(感谢@Sebastien指出
/$1
):


我发现我正在SSL端口443上监听SSL关闭。谢谢你的
$/1
,它很有魅力。不知道为什么这个话题被关闭了。有一大堆与nginx配置相关的问题(请参阅右侧的“相关”部分)。解决方案并不简单,我倾向于认为在这里分享它是一个好主意。如果问题的写作方式有任何具体问题,请让我知道或随意重新措辞。
server {
  listen   443;
  server_name  additional.com;
  rewrite ^/(.*) http://site.com permanent;
}
rewrite ^/(.*) https://site.com/$1 permanent;
server {
  listen   443 ssl;
  server_name  additional.com;
  rewrite ^/(.*) https://site.com/$1 permanent;
}