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

nginx: перезапись URL и производительность

У меня есть веб-сайт, на котором мне нужно изменить структуру URL-адресов. Старые URL-адреса выглядят так /olddir/part1_de.htm, новые будут выглядеть как /newdir/sub/category/anotherpage.htm. Мне нужно сделать много перезаписей URL-адресов, я предполагаю, что в итоге будет около 500 отдельных перезаписей.

Поскольку мой веб-сайт получает довольно много трафика, меня больше всего беспокоит производительность. Мои вопросы:

Вы можете найти модуль карты чтобы работать лучше, особенно если большинство URL-адресов не обязательно должны быть регулярными выражениями. Например (не проверено):

map $uri $new {
    /olddir/part1_de.htm    /newdir/sub/category/anotherpage.htm;
    ~^/olddir/part(?<num>[0-9]+)_en.htm$    /newdir/sub/category/part$num;
    ...
}

if ($new) {
    rewrite ^ $new permanent;
}

Nginx компилирует свою конфигурацию в своего рода двоичное дерево во время первоначального запуска или перезагрузки конфигурации (не с каждым запросом). Таким образом, можно использовать перезапись, но рекомендуемый вариант и лучшая практика - по возможности использовать директиву try_files.