Nginx 下 HTTPS 域名错乱的问题

更新日期: 2019-02-26 阅读次数: 7117 字数: 297 分类: Nginx

我的博客服务器上,除了 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 聊聊, 查看更多联系方式