将二级域名定向到顶级域名

本站从一开始即使用的是不加www的裸域(zimohan.com),但是由于某种要求,需要启用www二级域名与裸域同时访问。首先想到的是添加www的cname,但是zimohan.com已经添加了https支持,通过设置给www设置cname,访问的时候会报证书错误,于是改为从服务器端找突破口。

更改Nginx配置定向到顶级域名

打开网站的配置文件(/etc/nginx/sites-enabled/zimohan.com.conf),我这里使用的是certbot安装的Let's Encrypt免费证书,所以在配置文件中有两个server字段,修改第一个server中的server_name,添加www二级域名的支持:

server_name zimohan.com www.zimohan.com; #添加www.zimohan.com

在第二个server中添加:

if ($host = www.zimohan.com) {
    return 301 https://zimohan.com$request_uri;
}
# 检测到域名为www.zimohan.com时,定向到https://zimohan.com/

同样的,在server_name后面添加上www二级域名。第二个server的全部内容如下:

server {
    if ($host = www.zimohan.com) {
        return 301 https://zimohan.com$request_uri;
    }
    if ($host = zimohan.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot
    listen 80;
    server_name zimohan.com www.zimohan.com;
    return 404; # managed by Certbot
}

发表于:2019-11-16