ingress-nginx kubernetes Ingress에서 경로 기반 URL로 리디렉션하기 위해 와일드카드 URL을 설정하려고 하면 와일드카드 정규식 값을 전달하지 않는 것 같습니다.
URL은 "https://test.dev.example1.com/admin"과 같으며 다음으로 리디렉션되어야 합니다.https://example2.com/folder/test
내가 얻는 결과는 다음으로 리디렉션됩니다.https://example2.com/folder/
변수로 전달되는 "test"의 와일드카드 값을 가져오지 못하는 것 같습니다.
아래는 Ingress의 스니펫입니다.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: sample-service-ingress
annotations:
kubernetes.io/ingress.class: nginx
cert-manager.io/issuer: "letsencrypt-production"
nginx.ingress.kubernetes.io/ssl-redirect: "true"
nginx.ingress.kubernetes.io/server-snippet: |
server_name ~^(?<name>[\w-]+)\.dev\.example1\.com$;
location /admin {
return 301 $scheme://example2.com/folder/$name;
}
...
또한 regex101.com에서 정규식을 테스트했는데 올바른 것 같습니다. (~ 빼기)
나는 $name var를 가져와 "https를 반환하는 두 개의 다른 하드코딩된 값(예: return 301 $scheme://example2.com/folder/begin.$name.end;) 중간에 넣는 것과 같은 몇 가지 작업을 시도했습니다. ://example2.com/folder/begin..end"는 하드 코딩된 Begin..end 값 사이에 빈 값 또는 NULL 값을 반환합니다.
정규식의 $name var가 올바르게 전달되는지 확실하지 않습니다. 값을 볼 수 없습니다.
나는 이것을 참고로 다음을 참조하여 사용했습니다.https://stackoverflow.com/questions/39563071/how-to-get-subdomain-of-url-in-nginx