nginx ingress kuberneteでドメインをリダイレクトしたい。
https://test.example.io/preview/qLxiVcDGxCaQ134650121853FTg4
uRL preview
がドメインリダイレクトを変更する場合
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/ (これは単にリダイレクトされたリンクです)を使用してアクセスしないでください。
これを試して -
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
同義の種類の問題を表す this も参照できます
使用されたnginxイングレスアノテーション
nginx.ingress.kubernetes.io/server-snippet: |
location ~ /preview {
rewrite /preview https://test.app.example.com$uri permanent;
}