实现不带www与www之间的https跳转

593 阅读1分钟

域名

一级域名

一级域名是由一个合法字符串+域名后缀组成,例如:quicktable.io这种形式的域名才是一级域名。quicktable是域名主体,.io是域名后缀,可以是.cn域名后缀,也可以是其他的域名后缀。

二级域名

二级域名是在一个一级域名下面的主机名,简单理解,就是在一级域名前面加上一个字符串,比如www.quicktable.io

主页带不带www

大家访问网站一般都以www开头的,例如:www.quicktable.io. 但是现在很多网站都支持直接访问不带www的,并会自动跳转到带www。

下面以GoDaddy DNS解析为例

- 不需要 https的跳转

实现:quicktable.io 自动重定向到 www.quicktable.io

到DNS记录页面,选择<转发>

image.png

选择http或https

image.png

点击<保存>后GoDaddy会自动添加两条不可修改的A记录

image.png

如果用户访问 quicktable.io 会自动跳转到 www.quicktable.io 吗?

答案是:“不会”

- 需要 https的跳转

通过GoDaddy提供的转发功能并不能实现 quicktable.io 自动跳转到 www.quicktable.io 的功能 ,但思路是一样的。

像我们服务前面是有NLB做负载均衡的,为了实现效果,我们需要做三步调整。

  • 增加包含quicktable.io域名的证书

第一次申请的域名证书时并没有包含quicktable.io,需要重新生成一个包含*.quicktable.io 和 quicktable.io 域名的证书,并更新NLB配置。

  • Ingress Nginx需要增加quicktable.io的转发规则
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/permanent-redirect: https://www.quicktable.io ###301重定向
  name: quicktable-io-ingress
  namespace: <namespace>
spec:
  ingressClassName: nginx
  rules:
  - host: quicktable.io
    http:
      paths:
      - backend:
          service:
            name: official-website
            port:
              number: 80
        path: /
        pathType: Prefix
  • 去掉GoDaddy转发,手动添加NLB对应A记录。

通过 dig <NLB 域名> 获取对应IP

image.png