加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > Nginx > 正文

使用HTTPS将所有子域重定向到主域,而不使用通配符证书(nginx)

发布时间:2020-12-13 21:16:08 所属栏目:Nginx 来源:网络整理
导读:我有一个主站点和几个虚拟域名的域名.我希望只能通过HTTPS(使用HSTS)访问所有站点(主站点和虚拟站点),并且我希望将不存在的子站点重定向到主站点. 总结一下我想要的东西: https:/example.com:无重定向(主站点) http:/example.com:重定向到https:/examp

我有一个主站点和几个虚拟域名的域名.我希望只能通过HTTPS(使用HSTS)访问所有站点(主站点和虚拟站点),并且我希望将不存在的子站点重定向到主站点.

总结一下我想要的东西:

> https:/example.com:无重定向(主站点)
> http:/example.com:重定向到https:/example.com
> https:/vhost.example.com:无重定向(虚拟主机)
> http:/vhost.example.com:重定向到https:/vhost.example.com
> https:/doesntexist.example.com:重定向到https:/example.com
> http:/doesntexist.example.com:重定向到https:/example.com

我非常接近这一点,但倒数第二次重定向不起作用.我正在使用Let’s Encrypt的证书,该证书目前不提供通配符证书,因此证书仅对主域和vhost(我在创建证书时明确列出)有效.由于证书无效,浏览器会阻止连接.

绕过这个问题最好的方法是什么(如果有的话)?

这是我的(简化)nginx配置,如果它有帮助:

server {
    listen 80;
    server_name _;
    return 301 https://example.com$request_uri;
}

server {
    listen 443 spdy;
    server_name _;
    # SSL settings snipped for brevity. SPDY and HSTS are enabled.
    return 301 https://example.com$request_uri;
}

server {
    listen 443 spdy;
    server_name example.com;
    root /var/www/example.com;
    index index.html index.htm;
}

server {
    listen 443 spdy;
    server_name vhost.example.com;
    root /var/www/vhost.example.com;
    index index.html index.htm;
}
最佳答案
实际上,如果没有通配符证书,您无法解决问题.如果您无法提供与所请求的名称匹配的证书,那么您将收到连接错误 – 它是协议的基本部分.

我想,从理论上讲,你可以写一些东西,当它收到一个不在证书中的名字的SNI标题时,从Let’s Encrypt快速颁发证书,并在TLS握手中发回新的证书,但是. ..好吧,这不是一个实际的解决方案,是吗?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读