зачем перенаправлять (на стороне сервера) на root на nginx вход (обратный прокси) и перезаписать-цель - PullRequest
0 голосов
/ 29 апреля 2020

Я использую Kubernetes с Nginx входным контроллером, и у меня есть две службы (srv1 и srv2) в моем пространстве имен, к которым я хочу получить доступ, например, так:

https://xyz.example.com/srv1/ => (point to the root of srv1)
https://xyz.example.com/srv2/ => (point to the root of srv2)

, например, если кто-то нажмите на следующий URL:

https://xyz.example.com/srv1/page1.aspx

, тогда они попадут на page1.aspx , который находится в root моего приложения в srv1

он отлично работает с приведенным ниже входным файлом:

Проблема:

У меня есть вторая страница page2.aspx и Я поместил его рядом с page1.aspx , так что оба они находятся в root, теперь, если я нажму на кнопку на странице1, которая имеет код на стороне сервера, чтобы перенаправить нас на page2.aspx , тогда я ожидал, что мы попадем на следующий URL:

https://xyz.example.com/srv1/page2.aspx

, но вместо этого он перенаправит меня на следующий путь:

https://xyz.example.com/page2.aspx

Только для пояснение, я поместил ссылку HTML на страницу1, которая указывает на страницу2, она работает просто отлично, потому что работает на стороне клиента, а не на стороне сервера.

До сих пор я использовал следующие 3 языка для перенаправления на стороне сервера, и все они имеют одинаковое поведение:

C# & .net core (versions 2.1 , 2.2 , 3.0 and 3.1)
Python (version 3.7)
Ruby (version 2.7.1)

, так что я думаю, что проблема из Kubernetes, у кого-нибудь есть идеи?

вот мой вход YAML:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ds1-ingress
  namespace: ds1
  annotations:
    kubernetes.io/ingress.class: nginx
    certmanager.k8s.io/cluster-issuer: letsencrypt-prod
    nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
  tls:
  - hosts:
    - xyz.example.com
    secretName: tls-secret
  rules:
  - host: xyz.example.com
    http:
      paths:
      - backend:
          serviceName: srv1
          servicePort: 80
        path: /srv1/(.*)
      - backend:
          serviceName: srv2
          servicePort: 80
        path: /srv2/*
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...