Мы переходим с монолитного сайта на довольно стандартную интерфейсную / серверную архитектуру, и мы делаем это по частям.Таким образом, у нас довольно сложная маршрутизация в нашем NGINX conf.Когда мы переносим новый сервис из старой системы в новую, нам нужно перенаправить маршрут, но, учитывая, что у нас есть тысячи сгенерированных URL-адресов, это не всегда легко рассуждать.
Давайте использовать комнаты и целевые страницы какпример (но у нас много подобных конфликтов)
nginx-frontend.conf
# landing pages - to (eg) match /meeting-rooms/paris-2e-arrondissment
location ~* "^/([\p{L}\p{N}-]+)/([\p{L}\p{L}-]+)/?$" {
proxy_pass http://new:3000;
}
# rooms - to (eg) match /rooms/12345
location ~* "^/rooms/([\p{N}]+)/?$" {
proxy_pass http://old:3000;
}
Орел, заметивший вас, заметит, что первый маршрут (целевые страницы) также соответствует /rooms/12345
который является непреднамеренным и вызывает ошибки.У нас аналогичные проблемы с перехватом устаревшего css (/css/bobbins.js
) и многих других вещей.
Старые и новые сервисы затем выполняют внутреннюю маршрутизацию для генерации правильных данных.У нас есть все больше и больше устаревших маршрутов на старом сервере, что делает отключение его соответствующих маршрутов одинаково опасным / разочаровывающим.
Я хотел бы сделать, чтобы список маршрутов с ожидаемой службой был записан как некоторыесвоего рода тест (не важно, какой язык - python, node.js или php предпочтительнее, но я приму новый, если необходимо, чтобы исправить это) по этим линиям (псевдокод)
[
{
test: ['/rooms/12345/', '/rooms/12346', ...],
expect: service.to.be(old)
},
{
test: ['/meeting-rooms/paris-2e-arrondissment/', '/meeting-rooms/london', ...],
expect: service.to.be(new)
}
]
Затем, когда мы меняем маршрут, мы можем быть уверены, что не случайно представили проблему
Мы используем докер, и я знаю, что мне, вероятно, придется создать полное решение, а не ожидатьбыстрая строка кода.
Существует ли стандартный способ достижения этого или услуга, которую я могу использовать?В противном случае также будут с благодарностью получены описания возможных решений.