Cố gắng thiết lập một url ký tự đại diện trong ingress-nginx kubernetes Ingress để chuyển hướng đến url dựa trên đường dẫn, có vẻ như nó không vượt qua giá trị biểu thức chính của ký tự đại diện.
Url sẽ giống như "https://test.dev.example1.com/admin" và nó sẽ chuyển hướng đến https://example2.com/folder/test
Kết quả tôi nhận được là chuyển hướng đến https://example2.com/folder/
Có vẻ như tôi không nhận được giá trị ký tự đại diện của "thử nghiệm" xuất hiện dưới dạng một biến
Dưới đây là một đoạn của Ingress
apiVersion: mạng.k8s.io/v1
loại: Xâm nhập
metadata:
tên: mẫu-dịch vụ-ingress
chú thích:
kubernetes.io/ingress.class: nginx
cert-manager.io/issuer: "letsencrypt-product"
nginx.ingress.kubernetes.io/ssl-redirect: "true"
nginx.ingress.kubernetes.io/server-snippet: |
server_name ~^(?<name>[\w-]+)\.dev\.example1\.com$;
vị trí / quản trị viên {
trả về 301 $scheme://example2.com/folder/$name;
}
...
Tôi cũng đã kiểm tra regex trong regex101.com và nó có vẻ đúng. (trừ ~)
Tôi đã thử một số cách như lấy $name var và đặt vào giữa hai giá trị được mã hóa cứng khác (ví dụ: return 301 $scheme://example2.com/folder/begin.$name.end;) trả về "https ://example2.com/folder/begin..end" trả về giá trị rỗng hoặc NULL ở giữa các giá trị mã hóa cứng begin..end.
Tôi không chắc liệu $name var trong biểu thức chính quy có được chuyển chính xác hay không. Tôi không thể nhìn thấy một giá trị.
Tôi đã sử dụng điều này để tham khảo những điều sau đây như một tài liệu tham khảo https://stackoverflow.com/questions/39563071/how-to-get-subdomain-of-url-in-nginx