Ben*_*way 6 kubernetes nginx-ingress
在 Kubernetes 中使用 NGINX Ingresss,我看不到一种方法将我的流量从非 www 转发到 www 或基于每个主机的另一个域等
我试过查看 configmap 文档,但看不到我需要的东西。也许它可以进入入口本身?
我还看到了一个使用注释的示例,但这似乎是入口范围的,所以我无法为每个主机设置特定的重定向
Clo*_*hel 14
确实可以使用简单的注释进行重定向:
nginx.ingress.kubernetes.io/permanent-redirect: https://www.gothereinstead.comnginx.ingress.kubernetes.io/from-to-www-redirect: "true"但是正如您所提到的,它是“入口”范围的,并且无法按主机、域甚至每个路径进行配置。所以你必须自己通过ingress.kubernetes.io/configuration-snippet注解来完成,这要归功于正则表达式:
kind: Ingress
apiVersion: extensions/v1beta1
metadata:
name: self-made-redirect
annotations:
ingress.kubernetes.io/configuration-snippet: |
if ($host = 'blog.yourdomain.com') {
return 301 https://yournewblogurl.com;
}
if ($host ~ ^(.+)\.yourdomain\.com$) {
return 301 https://$1.anotherdomain.com$request_uri;
}
spec:
rules:
- host: ...
Run Code Online (Sandbox Code Playgroud)
如果您不太习惯 NGINX,您将更多地了解代码片段中的可能性,尤其是NGINX 文档中的$host变量是什么。
小智 5
为了将所有流量(无论使用 HTTP 还是 HTTPS)从 example.com 和www.example.com重定向到 newdomain.example.com,我最终得到了以下解决方案。
在此示例中,我还使用 cert-manager.io 请求www.example.com和 example.com 的证书。
重定向是使用注释nginx.ingress.kubernetes.io/permanent-redirect完成的
kind: Ingress
apiVersion: extensions/v1beta1
metadata:
name: redirect-example-to-newdomain
annotations:
kubernetes.io/ingress.class: "nginx"
cert-manager.io/cluster-issuer: "letsencrypt-prod"
nginx.ingress.kubernetes.io/permanent-redirect: https://newdomain.example.com
spec:
tls:
- hosts:
- example.com
- www.example.com
secretName: example.com-tls
rules:
- host: example.com
- host: www.example.com
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5046 次 |
| 最近记录: |