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=
По умолчанию: -
Контекст: 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.