2016-05-19 11 views
8

Mamy 2 domeny, które wskazują na nasz pojedynczy Zuul ELB. Obie strony korzystają z wielu takich samych usług, więc chociaż nasze środowisko produkcyjne będzie trochę inaczej skonfigurowane, mamy tylko jedną Zuul ELB.Jak skonfigurować trasy specyficzne dla domeny w Zuul

Jak możemy skierować tę samą ścieżkę do różnych usług na podstawie nazwy domeny?

chciałbym skończyć z czymś takim:

zuul: 
    host: http://a-zuul-host.elb.amazonaws.com:80 
    ignoredServices: '*' 
    routes: 
    app1: 
     path:/
     domain: app1.com 
     serviceId: APP_1_SERVICE 
    app2: 
     path:/
     domain: app2.com 
     serviceId: APP_2_SERVICE 

Czy to w ogóle możliwe czy chciałbym być wymagane, aby ustawić inny Zuul instancji?

Odpowiedz

1

Oto jeden z możliwych rozwiązań:

  1. Dodaj regułę routingu wieloznaczny w swoim Zuul konfiguracjach trasie każdą prośbę/** i wyłącz usuwanie prefiksu dla tej reguły routingu.
  2. Dodaj nowy filtr routingu typu trasy i uczynić go uruchomić przed RibbonRoutingFilter ponieważ wyjątek wystąpi w tym filtrze o nieprawidłowym hoście/**.
  3. Dodaj konfiguracje domen w konfiguracjach zuul yaml dla różnych domen.
  4. Użyj filtra wraz z konfiguracjami domen, aby zmienić hosta na podstawie domeny.

Oto przykładowy kod:

zuul: 
    ignored-patterns: /health, /info 
    routes: 
    wildcard: 
     path: /** 
     url: /** 
     stripPrefix: false 

Masz ignorować /zdrowie ponieważ ma być dopasowana z reguły routingu wieloznacznym i spowoduje problem - powinny być zmapowany do jednego z siłowników sprężynowych zamiast tego, więc ignorujemy go i pozwalamy, aby wszystko było obsługiwane jak poprzednio.

Do konfiguracji domen Oto przykład:

domain: 
    service_1: 
    domain-matcher: https://api_1.com:[0-9]+ 
    url: https://service_1.com 
    service_2: 
    domain-matcher: https://api_2.com:[0-9]+ 
    url: https://service_2.com 

w filtrze teraz tylko trzeba ustawić naszego gospodarza na podstawie domeny dopasowania.

Powiązane problemy