首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用nginx-ingress重定向来往www

使用nginx-ingress重定向来往www
EN

Stack Overflow用户
提问于 2020-11-11 06:49:45
回答 2查看 514关注 0票数 2

我有一个带有nginx-ingress的kubernetes集群,我尝试使用nginx.ingress.kubernetes.io/from-to-www-redirect注释将http://test.domain.com重定向到http://www.test.domaine.com

但它似乎不起作用。

我的入口资源:

代码语言:javascript
复制
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: app-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/from-to-www-redirect: "true"
spec:
  rules:
  - host: www.test.domain.com
    http:
      paths:
      - path: /
        backend:
          serviceName: app
          servicePort: 8080
  - host: test.domain.com
    http:
      paths:
      - path: /
        backend:
          serviceName: app
          servicePort: 8080

我已经尝试了很多配置,但是我不能让它工作。nginx.ingress.kubernetes.io/from-to-www-redirect注释没有任何效果!

EN

回答 2

Stack Overflow用户

发布于 2020-11-19 16:12:19

这是一个社区维基答案。您可以随意扩展它。

为了使其正常工作,您还需要使用nginx.ingress.kubernetes.io/configuration-snippet annotation。例如:

代码语言:javascript
复制
nginx.ingress.kubernetes.io/configuration-snippet: |
  if ($host = 'example.com' ) {
    rewrite ^ https://www.example.com$request_uri permanent;
  }

正如@apoorvakamath在评论中提到的,你可以参考this guide获得一个逐步详细的例子:

代码片段是解决方案的巧妙之处。它允许您向入口控制器添加动态配置。我们使用它来检测非www形式的URL的使用,然后简单地发出重写,该重写被推送(并通过您的域返回)到www表单。

票数 0
EN

Stack Overflow用户

发布于 2022-01-18 10:06:00

代码语言:javascript
复制
kind: Ingress
apiVersion: networking.k8s.io/v1
metadata:
  name: webui-ingress
  namespace: default
  annotations:
    kubernetes.io/ingress.allow-http: 'false'
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/affinity: cookie
    nginx.ingress.kubernetes.io/configuration-snippet: |
      more_set_headers "X-Frame-Options: SAMEORIGIN";
      more_set_headers "X-Xss-Protection: 0";
      more_set_headers "Referrer-Policy: use strict-origin-when-cross-origin";
      if ($host = 'test.domain.com' ) {
         return 301 https://www.test.domain.com ;
      }
    nginx.ingress.kubernetes.io/force-ssl-redirect: 'true'
    nginx.ingress.kubernetes.io/proxy-body-size: 10m
    nginx.ingress.kubernetes.io/rewrite-target: /
    nginx.ingress.kubernetes.io/session-cookie-hash: sha1
    nginx.ingress.kubernetes.io/session-cookie-name: route
    nginx.ingress.kubernetes.io/ssl-passthrough: 'true'
    nginx.ingress.kubernetes.io/ssl-redirect: 'true'
spec:
  tls:
    - hosts:
        - test.domain.com
      secretName: test-tls
    - hosts:
        - www.test.domain.com
      secretName: www-tls
  rules:
    - host: test.domain.com
      http:
        paths:
          - path: /
            pathType: ImplementationSpecific
            backend:
              service:
                name: webui
                port:
                  number: 8022
    - host: www.test.domain.com
      http:
        paths:
          - path: /
            pathType: ImplementationSpecific
            backend:
              service:
                name: webui
                port:
                  number: 8022

添加以下注释后,您的域名将重定向到www

代码语言:javascript
复制
nginx.ingress.kubernetes.io/configuration-snippet: |
  more_set_headers "X-Frame-Options: SAMEORIGIN";
  more_set_headers "X-Xss-Protection: 0";
  more_set_headers "Referrer-Policy: use strict-origin-when-cross-origin";
  if ($host = 'test.domain.com' ) {
     return 301 https://www.test.domain.com ;
  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64777939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档