Тест для обеспечения согласованности маршрутов NGINX - PullRequest
0 голосов
/ 28 января 2019

Мы переходим с монолитного сайта на довольно стандартную интерфейсную / серверную архитектуру, и мы делаем это по частям.Таким образом, у нас довольно сложная маршрутизация в нашем 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)
  }
]

Затем, когда мы меняем маршрут, мы можем быть уверены, что не случайно представили проблему

Мы используем докер, и я знаю, что мне, вероятно, придется создать полное решение, а не ожидатьбыстрая строка кода.

Существует ли стандартный способ достижения этого или услуга, которую я могу использовать?В противном случае также будут с благодарностью получены описания возможных решений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...