Обратный URL обратного прокси-сервера Kubernetes Nginx - PullRequest
0 голосов
/ 10 мая 2018

Я использую k8s с входом nginx. Он указывает https://www.example.com/app на какой-то модуль с перезаписью "/ app" на "/", приложение прослушивает 80 и обслуживает "/":

kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: /
  labels:
    app: example
  name: example
  namespace: default
spec:
  rules:
  - host: www.example.com
    http:
      paths:
      - backend:
          serviceName: app
          servicePort: 80
        path: /app
      - backend:
          serviceName: app
          servicePort: 80
        path: /app/
  tls:
  - hosts:
    - www.example.com
    secretName: example-tls

Если я собираюсь на https://www.example.com/app запрос, переданный модулю, и модуль ответил другим URL-адресом (например, / content), и мой браузер показывает мне https://www.example.com/content - это 404, потому что есть нет входного правила для "/ content". AFAIK nginx может переписать ответ с помощью sub_filter. Другой способ - разработать приложение с настраиваемым префиксом пути. Также я могу использовать base_url, но только с HTML. Но есть ли простой способ передать префикс взамен, поэтому, если pod return "/ content", nginx переписывает его в https://www.example.com/app/content

Спасибо.

1 Ответ

0 голосов
/ 11 мая 2018

Но есть ли простой способ передать префикс взамен, поэтому, если pod return "/ content", nginx переписывает его в https://www.example.com/app/content

Нет, простого способа сделатьэто по правилам Ingress.

Это возможно самим Nginx, но не реализовано в Nginx-Ingress.

Я настоятельно рекомендую вам вернуть правильный путь из приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...