Как раз наоборот. Задача nginx быстро отдавать статику и проксировать запросы в бекенд. А бизнес-логика это задача приложения.
Технически, у вас ошибка в неправильном понимании как работают location в nginx. В каждый момент времени запрос обрабатывается строго в каком-то одном location и любые директивы из других location не имеют силы даже если запрос подходит под их условия.
В вашем коде запрос на /auto/page-10.html попадает в первый location. Файла такого разумеется нет, срабатывает error_page и nginx передаёт обработку в @page. Там стоит безусловный редирект на /auto.html и на этом обработка запроса закончилась и до бекенда он даже не дошёл.
Kostushko:
> разумней везде ставить 301
Абсолютно неверно. Потому что когда у вас появится страница page-5.html, которой до этого не было вы придёте сюда же с вопросом, как сбросить кеши редиректа у всех ваших клиентов. И ответ будет — никак.
Смысла делать редирект со страницы page-811 так же не вижу, откуда туда могут появиться запросы?
Ваша джумла уже знает, что такой страницы нет (раз отдаёт 404) и я не верю что в ней нет возможности сгенерировать урл.
Ну и напоследок, это интересная задача на знание nginx, но я не вижу никакой практической пользы в этом действии.