回答问题

根据Traefik 1.7 文档您应该能够让 Traefik 使用以下命令执行 302 重定向:

  • traefik.ingress.kubernetes.io/redirect-regex

  • traefik.ingress.kubernetes.io/redirect-replacement

我的目标是简单地从地址中删除www.

这是我尝试过的,但找不到 404 服务。

---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: www-redirect
  namespace: public
  annotations:
    kubernetes.io/ingress.class: traefik
    traefik.ingress.kubernetes.io/redirect-regex: ^https?://www.example.com/(.*)
    traefik.ingress.kubernetes.io/redirect-replacement: https://example.com/$1
spec:
  rules:
  - host: www.example.com

不幸的是,文档没有明确说明_如何_使用它们。在撰写本文时,唯一的谷歌点击是文档(上图)。

我目前的工作(假设它有助于解释问题)是将www.流量路由到返回 302 的 nginx。

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

这似乎有点矫枉过正。

Answers

我遇到了同样的问题并最终使它与:

---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: www-redirect
  namespace: public
  annotations:
    kubernetes.io/ingress.class: traefik
    traefik.ingress.kubernetes.io/preserve-host: "true"
    traefik.ingress.kubernetes.io/redirect-permanent: "true"
    traefik.ingress.kubernetes.io/redirect-regex: "^https://www.(.*)"
    traefik.ingress.kubernetes.io/redirect-replacement: "https://$1"
spec:
  tls:
    - hosts:
        - "example.com"
        - "www.example.com"
      secretName: example-tls
  rules:
  - host: example.com
  - host: www.example.com

基本上我需要两个规则。

作为旁注,我还使用以下标志启动 trafik pod:

args:
   - --api
   - --kubernetes
   - --logLevel=INFO
   - --entryPoints=Name:https Address::443 TLS
   - --entrypoints=Name:http Address::80 Redirect.EntryPoint:https
   - --defaultentrypoints=https,http
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐