我们从 Thawte 获得了通配符证书,但该证书不适用于https://example.com。
因此,我们希望转发所有来自https://example.com到https://www.example.com没有收到证书错误。
这在 nginx 中可能吗?
我的配置:
server {
listen 80;
server_name example.ch
www.example.ch
api.example.ch;
if ($host = 'example.ch' ) {
rewrite ^/(.*)$ https://www.example.ch/$1 permanent;
}
rewrite ^ https://$server_name$request_uri? permanent;
}
server {
listen 443;
if ($host = 'example.ch' ) {
rewrite ^/(.*)$ https://www.example.ch/$1 permanent;
}
ssl on;
ssl_certificate /etc/nginx/ssl/example.crt;
ssl_certificate_key /etc/nginx/ssl/example.key;
server_name example.ch
www.example.ch
api.example.ch;
...
}
答案1
这是不可能的。尽管有 SNI,浏览器还是被告知要访问https://example.com会因为被重定向到其他地方而变得非常暴躁前已经为 example.com 提供了任何有效证书 - 如果没有,SSL 证书将毫无意义。
正如其他人指出的那样,如果没有获得对最初请求的域有效的证书,就无法支持这一点。