Мне нужно реализовать приложение Spring Boot + Cloud Gateway, чтобы оно служило прокси-сервером для нескольких правил, включающих несколько сайтов, например:
usecase 1: http://gateway/admin/** <-> http://site1/** (an admin site)
usecase 2: http://gateway/rest/** <-> http://site1/rest/** (a REST API)
usecase 3: http://gateway/<everything else>/** -> http://site2/**
До сих пор я экспериментировал с netflix-zuul, как описано в учебниках spring.io, например:
zuul.routes.admin.path=/admin/**
zuul.routes.admin.url=http://site1
zuul.routes.rest.path=/rest/**
zuul.routes.rest.url=http://site1/rest
ribbon.eureka.enabled=false
Работает простое сопоставление 1-к-1, например, http://шлюз/остальные/foo <-> http://site1/rest/foo. Этого может быть достаточно только для варианта использования № 2.
В чем я не уверен, так это в том, как проксировать сайт администратора на том же хосте, используя префикс («admin»), как в случае использования № 1 (т. Е. Внутренние ссылки также должны быть переведены)?
Кроме того, позже мне нужно поймать все остальное в сценарии использования № 3 и правильно перенаправить их на второй сайт «site2».
Является ли Zuul подходящим инструментом для этого? Пожалуйста, покажите мне правильное направление. ТИА!
Spring Cloud Gateway имеет полный доступ к регулярным выражениям Java для преобразования URL-адреса.
Как вы обычно реализуете прокси для всего сайта? Например, вы маршрутизируете на основе реферера? Кроме того, как вы обычно обрабатываете перенаправления (302), чтобы местоположение оставалось «шлюзом», а не «сайтом». Буду очень признателен за некоторые примеры кода/учебников, чтобы мне было с чего начать.




Взгляните на это: stackoverflow.com/questions/47092048/…