在 Traefik 中从一个域重定向到另一个域
Redirect in Traefik from one domain to another
根据 Traefik 1.7 documentation,您应该能够让 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/
spec:
rules:
- host: www.example.com
不幸的是,文档没有明确说明如何使用它们。在撰写本文时,唯一 google 命中的是文档(上方)。
我目前的解决方法(假设它会帮助解释问题)是将 www.
流量路由到 returns 302 的 nginx。
server {
listen 80;
server_name www.example.com;
return 302 https://example.com$request_uri;
}
这似乎有点矫枉过正。
我遇到了同样的问题,但最终使它适用于:
---
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://"
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
根据 Traefik 1.7 documentation,您应该能够让 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/
spec:
rules:
- host: www.example.com
不幸的是,文档没有明确说明如何使用它们。在撰写本文时,唯一 google 命中的是文档(上方)。
我目前的解决方法(假设它会帮助解释问题)是将 www.
流量路由到 returns 302 的 nginx。
server {
listen 80;
server_name www.example.com;
return 302 https://example.com$request_uri;
}
这似乎有点矫枉过正。
我遇到了同样的问题,但最终使它适用于:
---
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://"
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