3

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

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

...

server {
  listen 80;
  server_name site.com additional.com;

  root /home/site/production/public;

  location / {
    ...
  }
}

server {
  listen 443;
  server_name site.com;
  ssl                  on;
  ...
}

这失败了,因为我将 SSL 流量代理到上行链路服务器,它无法处理它,因为它只谈论 HTTP 并且存在SSL23_GET_SERVER_HELLO:unknown protocol(对于 Chrome;Firefix 和 curl 的错误消息略有不同)。所以我不得不把它改成(注意http,而不是https):

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

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

如何正确设置从https://additional.com/login点到点的重定向https://site.com

4

2 回答 2

1

恐怕如果您想从 HTTPS 重定向到 HTTPS,您将需要一个 SSL 证书来完成旅程的每一步。没有办法解决它 - 至少要杀死你的错误。

就是说...尝试所有的重写:

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

这应该保持使用的路径。

于 2013-04-09T09:30:08.990 回答
1

我发现一切都443应该是443 ssl并重写作品(感谢@Sebastien 指出/$1):

server {
  listen   443 ssl;
  server_name  additional.com;
  rewrite ^/(.*) https://site.com/$1 permanent;
}
于 2013-04-09T10:55:28.190 回答