Назад | Перейти на главную страницу

Перенаправить существующие запросы API в новый формат API с помощью правил Nginx

Q1: У меня есть существующий API, использующий формат https://sub1.domain.com/whatever?test=yes на поддомене sub1, но теперь я хочу переключиться на поддомен sub2 и такой формат, как https://sub2.domain.com/v2/page/embed?new=1

Старые запросы должны по-прежнему работать, но должны быть «перенаправлены» или «перенаправлены» в новый формат запроса и другой субдомен. В идеале это должно происходить незаметно (незаметно за кулисами) и не требует, чтобы cURL следил за перенаправлениями, если это не является неизбежным.

Q2: В качестве альтернативы я мог бы пойти на компромисс, отвечая на запросы API для https://sub1.domain.com/whatever?test=yes используя тот же формат, но «пересылать» или «перенаправлять» на новый субдомен, например https://sub2.domain.com/whatever?test=yes

Дело в том, что 25000+ пользователей с устаревшим форматом не должны будут обновлять свой код, чтобы в конечном итоге обслуживаться с нового сервера на sub2, и предпочтительно с использованием нового формата (что устраняет необходимость поддерживать два набора параметров API).

Благодарю за вашу поддержку. Спасибо!

ОБНОВИТЬ:

Я сам мог найти ответы. Это кому-то поможет в будущем.

Для Q1:

location / {

   if ($arg_test ~* yes) {

       return 301 https://sub2.domain.com/v2/page/embed?new=1;

   }

}

Для Q2:

location / {

   if ($arg_test ~* yes) {

       rewrite ^(.*)$ https://sub2.domain.com$1;

   }

}

Я сам мог найти ответы. Это кому-то поможет в будущем.

Для Q1:

location / {

   if ($arg_test ~* yes) {

       return 301 https://sub2.domain.com/v2/page/embed?new=1;

   }

}

Для Q2:

location / {

   if ($arg_test ~* yes) {

       rewrite ^(.*)$ https://sub2.domain.com$1;

   }

}

Ты можешь использовать:

server {
# Permanent redirect to an individual page
rewrite ^/oldpage$ newpage permanent;
}