我有一个 .com 和 .co.uk 版本的域名。我希望这些域名的所有组合(包括 www 子域名)都重定向到 https .co.uk 版本。
我所说的每种组合是指以下所有内容都应重定向到https://example.co.uk
。
http://example.com
https://example.com
http://www.example.com
https://www.example.com
http://example.co.uk
http://www.example.co.uk
https://www.example.co.uk
我认为我已经通过以下方式基本实现了这一目标:
server {
listen 443 ssl http2;
server_name example.co.uk;
ssl_certificate /etc/letsencrypt/live/example.co.uk/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.co.uk/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
root /var/www/example.co.uk;
index index.html;
}
server {
listen 80;
server_name example.co.uk;
return 301 https://example.co.uk$request_uri;
}
server {
listen 443 ssl;
server_name www.example.co.uk;
return 301 https://example.co.uk$request_uri;
}
server {
listen 80;
server_name www.example.co.uk;
return 301 https://example.co.uk$request_uri;
}
server {
listen 443 ssl;
server_name example.com;
return 301 https://example.co.uk$request_uri;
}
server {
listen 80;
server_name example.com;
return 301 https://example.co.uk$request_uri;
}
server {
listen 443 ssl;
server_name www.example.com;
return 301 https://example.co.uk$request_uri;
}
server {
listen 80;
server_name www.example.com;
return 301 https://example.co.uk$request_uri;
}
唯一的问题是,当我尝试时https://example.com
,https://www.example.com
它会给我一个浏览器隐私错误页面。
我是否需要为两个域名和两个 www 子域名获取单独的 SSL 证书才能使此设置正常工作?所以我最终会得到 4 个证书?
答案1
最简单的方法是获取一个与所有域名匹配的证书。一个证书可以匹配多个名称,这称为主题备用名称 (SAN)。
您可以从 Let's encrypt 免费获得这样的证书,您只需安排对所有域名进行验证。