Nginx 下 HTTPS 域名错乱的问题

文章目录

    我的博客服务器上,除了 https://www.sunzhongwei.com 这个网站之外,还有一些其他的网站,用的其他的域名。

    但是,在 为博客启用了 HTTPS 之后,今天看百度统计的实时访客,看到了一个奇怪的问题。即通过

    https://some-other-domain.com/some-url

    来访问对应的

    https://www.sunzhongwei.com/some-url

    结果就是 Google 浏览器显示了一个安全警告页面,认为这是一个不安全的网页。因为我只配置了 www.sunzhongwei.com 的 SSL 证书,其他域名并没有配置。

    解决方法

    在 Certbot 生成的 SSL 配置下方加入 host 检查

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/www.sunzhongwei.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/www.sunzhongwei.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
    
    if ($scheme != "https") {
         return 301 https://$host$request_uri;
    } # managed by Certbot
    
    # 以下为新增配置
    if ($host != "www.sunzhongwei.com") {
         return 301 https://www.sunzhongwei.com$request_uri;
    }
    

    这样搜素引擎的爬虫就能正常访问正确的域名了。

    但是这个解决方法,看上去非常不优雅,需要再找找有没有更直观的解决方法。

    参考

    How to tell nginx to serve https only for one vhost-managed domain?

    关于作者 🌱

    我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式