Настройка базовой аутентификации в Traefik 2.0 для использования с R plumber API - PullRequest
1 голос
/ 05 ноября 2019

Я пытаюсь увеличить мой API R-сантехника и начинаю играть с Traefik 2.0 как средством раскрытия, балансировки нагрузки и защиты остальных API, написанных на R. Я не могу заставить traefik добавить базовую аутентификацию и передают путь и параметры запроса контейнеру, в котором работает мой API. Базовая аутентификация работает, и я могу правильно настроить обратный прокси для контейнера, но не оба одновременно. Приведенная ниже настройка приводит к ошибке 404.

Я могу нормально запустить API контейнерного сантехника. Я могу получить доступ к API-интерфейсу контейнерного сантехника через traefik (см. Ниже), используя образ док-станции trestletech / plumber по пути "api_test". Я могу настроить базовую аутентификацию, используя пример whoami Traefik (см. Ниже), и он работает (например, http://localhost/traefexample/whoami).

I не может успешно добавить две строки, которые закомментированы ниже. Iхочу, чтобы эти две строки добавили базовую аутентификацию, и пока это работает, я получаю ошибку 404, а не ожидаемую информацию.

version: '3.7'

services:
  reverse-proxy:
    # The official v2.0 Traefik docker image
    image: traefik:v2.0
    # Enables the web UI and tells Traefik to listen to docker
    command:
      - --entrypoints.web.address=:80
      - --entrypoints.websecure.address=:443
      - --api.insecure=true
      - --providers.docker

    ports:
      # The HTTP port
      - "80:80"
      - "8000:8080"
    volumes:
      # So that Traefik can listen to the Docker events
      - /var/run/docker.sock:/var/run/docker.sock

  api_test:
    # An R plumber api in a docker container
    image: trestletech/plumber
    labels:
      - "traefik.http.routers.api_test.rule=Path(`/api_test/{path:.+}`)"
      - "traefik.http.middlewares.api_test-replacepathregex.replacepathregex.regex=/api_test(.*)"
      - "traefik.http.middlewares.api_test-replacepathregex.replacepathregex.replacement=$$1"
      - "traefik.http.routers.api_test.middlewares=api_test-replacepathregex@docker"
   #   - "traefik.http.routers.api_test.middlewares=auth"
   #   - "traefik.http.middlewares.auth.basicauth.users=user:$$apr1$$q8eZFHjF$$Fvmkk//V6Btlaf2i/ju5n/"




  traefexample:
  # A container that exposes an API to show its IP address - example from traefik basic, auth is working
    image: containous/whoami
    labels:
      - "traefik.http.routers.traefexample.rule=Path(`/traefexample/{path:.+}`)"
      - "traefik.http.middlewares.traefexample-replacepathregex.replacepathregex.regex=/traefexample(.*)"
      - "traefik.http.middlewares.traefexample-replacepathregex.replacepathregex.replacement=$$1"
      - "traefik.http.routers.traefexample.middlewares=traefexample-replacepathregex@docker"
      - "traefik.http.routers.traefexample.middlewares=auth"
      - "traefik.http.middlewares.auth.basicauth.users=user:$$apr1$$q8eZFHjF$$Fvmkk//V6Btlaf2i/ju5n/"


При опубликованной настройке я могу использовать конечную точку "http://localhost/api_test/mean" и ответ является средним значением некоторых случайно выбранных чисел.

Когда я добавляю две строки аутентификации (в настоящее время закомментированные), я получаю ошибку 404, когда ожидаю одно число.

...