将Traefik中的一个域重定向到另一个域

Dan*_*elM 13 kubernetes traefik kubernetes-ingress

根据文档,你应该能够让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
Run Code Online (Sandbox Code Playgroud)

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

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

server {
    listen       80;
    server_name  www.example.com;
    return 302 https://example.com$request_uri;
}
Run Code Online (Sandbox Code Playgroud)

这看起来有点矫枉过正.

Syl*_*rch 5

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

---
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
Run Code Online (Sandbox Code Playgroud)

基本上我需要这两个规则。

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

args:
   - --api
   - --kubernetes
   - --logLevel=INFO
   - --entryPoints=Name:https Address::443 TLS
   - --entrypoints=Name:http Address::80 Redirect.EntryPoint:https
   - --defaultentrypoints=https,http
Run Code Online (Sandbox Code Playgroud)