Перейти к содержанию

internal-redirect: внутренний редирект на указанный URI

Установка

Вы можете установить этот модуль в любом дистрибутиве на базе RHEL, включая, но не ограничиваясь:

  • RedHat Enterprise Linux 7, 8, 9 и 10
  • CentOS 7, 8, 9
  • AlmaLinux 8, 9
  • Rocky Linux 8, 9
  • Amazon Linux 2 и Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-internal-redirect
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-internal-redirect

Включите модуль, добавив следующую строку в начало /etc/nginx/nginx.conf:

load_module modules/ngx_http_internal_redirect_module.so;

Этот документ описывает nginx-module-internal-redirect v1.0.1, выпущенный 08 марта 2026 г.


server {
    listen 127.0.0.1:80;
    server_name localhost;

    location /old {
        internal_redirect -i ^/old(.+) /new$1 phase=preaccess;
    }

    location /new {
        return 200 'current uri is: $uri';
    }
}

Директивы

internal_redirect

Синтаксис: internal_redirect [-i] pattern replacement [phase=] [flag=] [if= | if!=]

По умолчанию: -

Контекст: http, server, location

Задаёт новый URI для внутреннего редиректа запроса. Также можно использовать именованную location вместо URI. Значение replacement может содержать переменные. Если значение uri пустое, то редирект выполняться не будет. После выполнения внутреннего редиректа URI запроса будет изменён, и запрос вернётся на фазу NGX_HTTP_SERVER_REWRITE_PHASE (server_rewrite). Запрос продолжается с location по умолчанию для сервера. Позже, на фазе NGX_HTTP_FIND_CONFIG_PHASE (find_config), выбирается новая location на основе нового URI запроса.

Для получения дополнительной информации о фазах обработки запросов в nginx обратитесь к Development guide#http_phases

Необязательный параметр -i указывает, что сопоставление регулярного выражения должно выполняться без учёта регистра.

Необязательный параметр phase= используется для указания фазы, на которой действует это правило. Возможные значения: preaccess, access, precontent и content. Правила каждой фазы будут выполнены полностью до выполнения внутреннего редиректа. Значение по умолчанию — preaccess.

Необязательный параметр flag= используется для дополнительных действий после вычисления правила. Значением этого параметра может быть одно из: * break останавливает обработку текущего набора правил на этой фазе и немедленно выполняет внутренний редирект; * status_301 возвращает редирект с кодом 301. * status_302 возвращает редирект с кодом 302. * status_303 возвращает редирект с кодом 303. * status_307 возвращает редирект с кодом 307. * status_308 возвращает редирект с кодом 308.

Параметр if включает условный редирект. Запрос не будет перенаправлен, если условие вычисляется как «0» или пустая строка. Также можно использовать форму if!= для отрицательных условий.