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

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 v0.1.0, выпущенный 6 января 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 для внутреннего редиректа запроса. Также возможно использовать именованное местоположение вместо URI. Значение замены может содержать переменные. Если значение uri пустое, редирект не будет выполнен. После выполнения внутреннего редиректа URI запроса изменится, и запрос вернется на фазу NGX_HTTP_SERVER_REWRITE_PHASE (server_rewrite). Запрос продолжится с местоположением по умолчанию сервера. Позже на фазе NGX_HTTP_FIND_CONFIG_PHASE (find_config) будет выбрано новое местоположение на основе нового 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!=, чтобы сделать отрицательные суждения.

GitHub

Вы можете найти дополнительные советы по конфигурации и документацию для этого модуля в репозитории GitHub для nginx-module-internal-redirect.