Я пытаюсь настроить весенний облачный шлюз для пересылки в стандартный пользовательский интерфейс HashiCorp Consul в разделе «/ consul / ui» или просто «/ consul». Однако я не понимаю, как это сделать правильно. Консул работает в стандартной комплектации. У меня есть внешний IP-адрес и локальный сетевой интерфейс на 10.2.0.2. Я пытался:
routes:
- id: consul
uri: "http://127.0.0.1:8500"
predicates:
- Path=/consul/
curl -L 127.0.0.1/consul/ui, однако, дает мне 500, поскольку, согласно журналам, шлюз не соответствует / consul, но / consul / **, а затем решает перенаправить на 10.2.0.2:8300, который является Consuls rpc конечная точка.
Еще одна попытка:
- id: consul
uri: "http://127.0.0.1:8500"
predicates:
- Path=/consul/**
filters:
- StripPrefix=1
... сделал то же самое, что и другой. Еще один многообещающий подход:
- id: consul
uri: "http://127.0.0.1:8500"
predicates:
- Path=/consul/**
filters:
- RewritePath=/consul/(?<segment>.*), /ui/$\{segment}
Использование curl -L действительно работает в командной строке. Однако в браузере я вижу только логотип консула, а вся страница не загружается.
Я, конечно, пробовал и другие комбинации, ни одна из них не сработала.
Примечание. Конечная точка consul / ui передает статус 302, а затем перенаправляет на фактическую страницу.
Примечание: я использую SSL в шлюзе.
Примечание: ssh -N -f -L 8500:localhost:8500 <user>@<host>
позволяет мне открывать ожидаемый пользовательский интерфейс локально под localhost: 8500.
ОБНОВЛЕНИЕ: Очевидно, /consul/**
был плохим выбором, поскольку сам консул уже зарегистрирован по этому маршруту, поэтому у меня возник конфликт. Это, по крайней мере, проясняет, почему облачный шлюз пробовал маршрутизацию на порт 8300.