Фильтровать входные пути в nginx-входе для защиты серверной части

#kubernetes #nginx-ingress

#kubernetes #nginx-вход

Вопрос:

У меня очень простая конфигурация, но пока не нашел прямого ответа. Таким образом, за этим стоит nginx-вход и служба gunicorn. Я хочу защитить серверную часть gunicorn от всех ботов, использующих грубые URL-адреса. Поэтому я хочу перенаправить только несколько URL-адресов, таких как:

  • /
  • / один/*
  • / два/*
  • / три/*

Какова самая простая конфигурация входа для достижения этой цели?

Комментарии:

1. Вы используете kubernetes nginx ingress или nginxinc kubernetes ingress ? Я бы сказал, что простого входа, подобного here , должно быть достаточно, просто добавьте еще 2 пути и удалите раздел tls, если вы его не используете. Кроме того, взгляните на эту проблему на github , там есть полезная информация и несколько примеров. Это отвечает на ваш вопрос?

2. Частично проблема в том, что root(«/») разрешает все, но мне нужно именно «/» и перечисленные URL-адреса с путями, а все остальное — запретить.

Ответ №1:

Вы можете попробовать эту конфигурацию:

 apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: app
  labels:
    app.kubernetes.io/name: app
  annotations:
    nginx.ingress.kubernetes.io/use-regex: "true"
spec:
  rules:
    - host: app.domain.com
      http:
        paths:
        - path: /(one|two|three)/
          backend:
            serviceName: app
            servicePort: 5000
        - path: /(. )
          backend:
            serviceName: app2
            servicePort: 5000
        - path: /
          backend:
            serviceName: app
            servicePort: 5000
  

В этом примере:

  • приложение — ваше приложение
  • app2 — приложение, которое отвечает с 403 или другой ошибкой