Где я должен реализовать блок перенаправления URL-адресов?

Мне нужно реализовать сотни перенаправлений URL-адресов, и я не совсем уверен, где лучше всего и наиболее эффективно реализовать блок перенаправления: на сервере Varnish или на сервере Nginx. Архитектура проиллюстрирована ниже:

enter image description here

Я склонен реализовать ее на сервере Varnish, поскольку это первый порт захода после CDN.

Сообщите, пожалуйста, о слабых местах или потенциальных проблемах с этим. Спасибо.

0
задан 18 March 2019 в 20:00
1 ответ

На самом деле я думаю, вам следует реализовать перенаправления в nginx. Вот почему:

Varnish действительно может создавать синтетические перенаправления , но он должен пройти длинную цепочку сравнений if для каждого запроса, которая становится медленнее, чем больше перенаправлений вы добавляете. . Это O ( n ).

В nginx вы должны создать карту старых и новых URL-адресов, как показано ниже. Поскольку карта хранится в хэш-таблицах, поиск выполняется намного быстрее, примерно O (журнал n ). Разница не важна при нескольких редиректах, но после сотен она может стать заметной. После 57 000 он будет очень медленным в лаке.

Кроме того, лак теперь может кэшировать перенаправления, вместо того, чтобы синтетически воссоздавать их каждое. запрос.

Настройка в nginx выглядит так: вы создаете карту старых и новых URL-адресов, например:

map $uri $new_uri {
    /sofa.html /living/sofas/
    /beds.html /bedroom/beds/
}

Затем в блоке server , который будет выполнять перенаправления, вы просто добавляете тест, чтобы увидеть, соответствует ли один из URL-адресов, и перенаправляете, если он совпал:

if ($new_uri) {
   return 301 $new_uri;
}
1
ответ дан 4 December 2019 в 15:44

Теги

Похожие вопросы