web-dev-qa-db-fra.com

redirection de sous-chemin d'entrée nginx

J'ai un contrôleur d'entrée et une ressource d'entrée fonctionnant avec tous/devops mappés à devopsservice dans le backend. Quand j'essaye de frapper " http: // hostname/devops " les choses fonctionnent et j'obtiens une page (bien que sans CSS et styles) avec un ensemble d'hyperliens, par exemple l'un d'eux est "logs".

Lorsque je clique sur l'hyperlien "logs", il me redirige vers http: // hostname/logs alors que j'en ai besoin http: // hostname/devops/logs =.

Une idée de ce que je peux faire?

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
 name: my-ingress
 namespace: ingress-nginx
 annotations:
   kubernetes.io/ingress.class: nginx
   nginx.ingress.kubernetes.io/rewrite-target: /
   nginx.ingress.kubernetes.io/add-base-url : "true"
spec:
 rules:
 - Host: master1.dev.local
   http:
     paths:
     - backend:
         serviceName: devops1
         servicePort: 10311
       path: /devops
6
user1722908

Si vous accédez à http://hostname/devops/logs directement depuis votre navigateur, vous obtiendrez certainement ce que vous voulez. Mais puisque vous cliquez sur le lien hypertexte dans la page d'accueil, vous ne pouvez obtenir que http://hostname/logs, ce qui sera certainement un échec.

Donc, vous avez besoin de /logs backend configuré dans votre yaml d'entrée pour le traiter et configurer nginx.ingress.kubernetes.io/configuration-snippet s'assurer /logs ne pas être réécrit, comme ceci:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
 name: my-ingress
 namespace: ingress-nginx
 annotations:
   kubernetes.io/ingress.class: nginx
   nginx.ingress.kubernetes.io/rewrite-target: /
   nginx.ingress.kubernetes.io/add-base-url : "true"
   nginx.ingress.kubernetes.io/configuration-snippet: |
     rewrite ^/logs /logs break;
spec:
 rules:
 - Host: master1.dev.local
   http:
     paths:
     - backend:
         serviceName: devops1
         servicePort: 10311
       path: /logs
     - backend:
         serviceName: devops1
         servicePort: 10311
       path: /devops
1
Kun Li

On dirait que votre entrée ne sert à rien /devops/*. Essayez d'ajouter un autre chemin /devops/* avec le même backend. Fondamentalement, cela:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
 name: my-ingress
 namespace: ingress-nginx
 annotations:
   kubernetes.io/ingress.class: nginx
   nginx.ingress.kubernetes.io/rewrite-target: /
   nginx.ingress.kubernetes.io/add-base-url : "true"
spec:
 rules:
 - Host: master1.dev.local
   http:
     paths:
     - backend:
         serviceName: devops1
         servicePort: 10311
       path: /devops/*
     - backend:
         serviceName: devops1
         servicePort: 10311
       path: /devops

Au moment de la rédaction de ce document, il y avait encore travail en cours dans ce domaine.

0
Rico