Zuul прокси на другой URL в соответствии с зарегистрированным пользователем - PullRequest
0 голосов
/ 28 апреля 2018

Я проектирую некоторую бот-ферму, где у каждого пользователя есть свой бот, и я бы хотел добиться следующего

  1. Пользователь входит на веб-сервер
  2. Zuul сервер затем распакует из БД IP бота конкретного пользователя
  3. Зуул будет действовать как обратный прокси к боту, с другими пользователями, способными сделать то же самое параллельно конечно

До сих пор я видел примеры перенаправления на конкретную службу в соответствии с путем. но возможно ли сделать это динамически в соответствии с зарегистрированным IP-адресом бота пользователя?

1 Ответ

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

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

  @Override
  public String filterType() {
    return PRE_TYPE;
  }

  @Override
  public int filterOrder() {
    return PRE_DECORATION_FILTER_ORDER + 1;
  }

  public Object run() {
    RequestContext ctx = getCurrentContext();
    ctx.put(REQUEST_URI_KEY, "/test/");
    try {
      if (new Random().nextInt(10) > 5) {
        ctx.setRouteHost(new URL("http://192.168.1.14:8088"));
      } else {
        ctx.setRouteHost(new URL("http://192.168.1.14:8089"));
      }
    } catch (MalformedURLException e) {
      log.error("", e);
    }
  return null;
  }

мое application.properties выглядит так:

spring.application.name=zuul-server
server.port=8080
management.endpoints.web.exposure.include=*
zuul.routes.test.path=/test/**
...