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

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

Мне нужно реализовать сотни перенаправлений 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;
}