Kubernetes入口域重定向



我想重定向nginxingress kubernete中的域。

https://test.example.io/preview/qLxiVcDGxCaQ134650121853FTg4

如果在urlpreview中出现更改域重定向

https://test.app.example.io/preview/qLxiVcDGxCaQ134650121853FTg4

我在尝试

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
certmanager.k8s.io/cluster-issuer: staging
nginx.ingress.kubernetes.io/rewrite-target: /
kubernetes.io/ingress.class: nginx
name: staging-ingress
spec:
rules:
- host: test.example.io
http:
paths:
- path: /
backend:
serviceName: service-1
servicePort: 80
- path: /preview/*
backend:
url: 
serviceName: service-2
servicePort: 80
tls:
- hosts:
- test.example.io
secretName: staging

对于简单的nginx块就像

location ~ /preview
{
rewrite /preview https://test.app.example.com$uri permanent;
}

我的逻辑思维,试试看:

metadata:
annotations:
nginx.ingress.kubernetes.io/configuration-snippet: |
rewrite /preview https://test.app.example.com$uri permanent;
spec:
rules:
- host: test.example.io
http:
paths:
- path: /
backend:
serviceName: service-1
servicePort: 80
- host: test.app.example.io
http:
paths:
- path: /preview/*
backend:
serviceName: service-2
servicePort: 80

希望它能起作用!

关于上面的代码:您不应该使用访问:https://test.app.example.io/preview/(它只是重定向链接(。

使用nginx入口注释

nginx.ingress.kubernetes.io/server-snippet: |
location ~ /preview {
rewrite /preview https://test.app.example.com$uri permanent;
}

我可能会迟到,但我认为接受的解决方案不能完全回答最初的问题。

在重定向到新主机之前,我们可以使用ngx_http_rewrite_module提供的NGINX的条件URL重写来检测主机是否与初始域匹配。这里,条件基于主机名:$host(NGINX中也提供了其他var,用于更高级的配置(。

nginx.ingress.kubernetes.io/server-snippet: |
if ($host = "<OLD_HOSTNAME>") {
rewrite /preview $scheme://<NEW_HOSTNAME>$uri permanent;
}

此外,我同意OP关于这一点的评论,我不建议对这种自定义配置使用nginx.ingress.kubernetes.io/configuration-snippet,因为这种片段会将自定义配置添加到每个入口规则的location块中。

相反,如果我们仍然想使用注释片段,请使用nginx.ingress.kubernetes.io/server-snippet添加一个将应用于整个NGINX实例的配置。此外,它可能会导致意想不到的结果。

试试这个-

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
certmanager.k8s.io/cluster-issuer: staging
nginx.ingress.kubernetes.io/rewrite-target: /$1
kubernetes.io/ingress.class: nginx
name: staging-ingress
spec:
rules:
- host: test.example.io
http:
paths:
- path: /(.*)
backend:
serviceName: service-1
servicePort: 80
- path: /preview/(.*)
backend: 
serviceName: service-2
servicePort: 80
tls:
- hosts:
- test.example.io
secretName: staging

你也可以引用这个,代表的同义类型

相关内容

  • 没有找到相关文章

最新更新