首页 > 解决方案 > 入口将域 www 重写为非 www url

问题描述

我正在尝试将我的域“www.test.example.com”重定向到test.example.com

在入口中,我添加了注释

nginx.ingress.kubernetes.io/configuration-snippet: |
      if ($host = 'www.test.wotnot.io' ) {
          rewrite ^/(.*)$ https://app.test.wotnot.io/$1 permanent;
      }

它没有按预期工作。

为了测试我试过这个

nginx.ingress.kubernetes.io/configuration-snippet: |
      if ($host = 'test.example.com' ) {
          rewrite ^/(.*)$ https://google.com/$1 permanent;
      }

这工作正常。

我的网站正在处理test.example.com和 ssl 证书。

整个入口

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    certmanager.k8s.io/cluster-issuer: wordpress-staging
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/from-to-www-redirect: "true"
    #nginx.ingress.kubernetes.io/configuration-snippet: |
      #if ($host = 'www.test.wotnot.io' ) {
        #  rewrite ^/(.*)$ https://test.example.io/$1 permanent;
      #}
  name: wordpress-staging-ingress
spec:
  rules:
  - host: test.example.io
    http:
      paths:
      - backend:
          serviceName: wordpress-site
          servicePort: 80
        path: /
  tls:
  - hosts:
    - test.example.io
    secretName: wordpress-staging

标签: kuberneteskubernetes-ingressnginx-ingress

解决方案


Ingress 有一个注释nginx.ingress.kubernetes.io/from-to-www-redirect: "true",它已经处理了这个:

www.domain.com在某些情况下,需要从to 重定向,domain.com反之亦然。要启用此功能,请使用注释 nginx.ingress.kubernetes.io/from-to-www-redirect: "true"

注意:对于 HTTPS 到 HTTPS 重定向是强制性的,位于 Ingress 的 TLS 部分的 Secret 中定义的 SSL 证书包含证书公用名中的 FQDN。

最好使用它而不是对抗/调整configuration-snippet注释。


推荐阅读