Tengo una configuración de ingreso de nginx tanto para el frontend como para el backend usando el archivo yaml a continuación.
apiVersion: networking.k8s.io/v1beta1 kind: Ingress metadata: name: polls-ingress annotations: kubernetes.io/ingress.class: "nginx" nginx.ingress.kubernetes.io/rewrite-target: /$1 nginx.ingress.kubernetes.io/service-upstream: "true" cert-manager.io/cluster-issuer: "letsencrypt-prod" spec: tls: - hosts: - example.com secretName: polls-tls rules: - host: example.com http: paths: - path: /(.*) backend: serviceName: frontend servicePort: 3000 - path: /graphql/(.*) backend: serviceName: polls servicePort: 8000Actualmente, mi objetivo de reescritura se redirecciona de la siguiente manera
example.com => / of frontend app example.com/ => / of frontend app example.com/graphql => / of frontend app example.com/graphql/post => / of frontend app example.com/graphql/ => / of backend app example.com/graphql/post/ => /post of backend appPero quiero que la aplicación backend se use tanto para graphql/post como para graphql/post/ como se muestra a continuación.
example.com => / of frontend app example.com/ => / of frontend app example.com/hello => /hello of frontend app example.com/test => /test of frontend app example.com/graphql => / of backend app example.com/graphql/ => / of backend app example.com/grpahql/post => /post of backend app example.com/graphql/post/ => /post of backend app¿Alguien podría decirme cómo lograrlo?
Debe cambiar la expresión regular para la ruta de graphql como la siguiente:
apiVersion: networking.k8s.io/v1beta1 kind: Ingress metadata: name: polls-ingress annotations: kubernetes.io/ingress.class: "nginx" nginx.ingress.kubernetes.io/rewrite-target: /$1 nginx.ingress.kubernetes.io/service-upstream: "true" cert-manager.io/cluster-issuer: "letsencrypt-prod" spec: tls: - hosts: - example.com secretName: polls-tls rules: - host: example.com http: paths: - path: /(.*) backend: serviceName: frontend servicePort: 3000 - path: /graphql/?(.*) # <- HERE add "?" backend: serviceName: polls servicePort: 8000De documentos en expresiones regulares:
El signo de interrogación indica cero o una aparición del elemento anterior. Por ejemplo, colou?r coincide tanto con "color" como con "color".