我有两个相同的域,由虚拟主机提供服务,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
?