Мне нужно реализовать сотни перенаправлений URL-адресов, и я не совсем уверен, где лучше всего и наиболее эффективно реализовать блок перенаправления: на сервере Varnish или на сервере Nginx. Архитектура проиллюстрирована ниже:
Я склонен реализовать его на сервере varnish, так как это первый порт захода после CDN.
Сообщите, пожалуйста, о слабых местах или потенциальных проблемах с этим. Спасибо.
На самом деле я думаю, вам следует реализовать перенаправления в nginx. Вот почему:
Лак действительно может создать синтетические перенаправления, но он должен пройти через длинную цепочку if
сравнения для каждого запроса, который становится медленнее, чем больше вы добавляете перенаправлений. Это О(п).
В nginx вы должны создать map
старых и новых URL-адресов, как показано ниже. Поскольку map
хранится в хеш-таблицах, поиск выполняется намного быстрее, примерно О(журнал п). Разница не важна при нескольких редиректах, но после сотен она может стать заметной. После 57 000, это было бы очень медленно в лаке.
Кроме того, лак теперь может тайник перенаправления, вместо того, чтобы синтетически воссоздавать их каждый запрос.
Настройка в nginx выглядит так: вы создаете map
старых и новых URL-адресов, например:
map $uri $new_uri {
/sofa.html /living/sofas/
/beds.html /bedroom/beds/
}
Тогда в server
блок, который будет выполнять перенаправления, вы просто добавляете тест, чтобы увидеть, соответствует ли один из URL-адресов, и перенаправляете, если это так:
if ($new_uri) {
return 301 $new_uri;
}