server-redirect: Umleitung des Servernamens innerhalb derselben Anfrage
Installation
Sie können dieses Modul in jeder RHEL-basierten Distribution installieren, einschließlich, aber nicht beschränkt auf:
- RedHat Enterprise Linux 7, 8, 9 und 10
- CentOS 7, 8, 9
- AlmaLinux 8, 9
- Rocky Linux 8, 9
- Amazon Linux 2 und Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-server-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-server-redirect
Aktivieren Sie das Modul, indem Sie Folgendes an den Anfang von /etc/nginx/nginx.conf hinzufügen:
load_module modules/ngx_http_server_redirect_module.so;
Dieses Dokument beschreibt nginx-module-server-redirect v0.1.2 veröffentlicht am 06. Januar 2026.
Beschreibung
Das ngx_http_server_redirect_module ist ein benutzerdefiniertes NGINX-Modul, das entwickelt wurde, um dynamische Serverumleitungen basierend auf konfigurierbaren Regeln zu erleichtern. Es ermöglicht Benutzern, eingehende Anfragen bedingt an verschiedene Server umzuleiten.
Übersicht
Grundlegende Umleitung
Leiten Sie alle Anfragen bedingungslos an newserver.com um.
http {
server {
listen 80;
server_name example.com;
server_redirect newserver.com;
location / {
proxy_pass http://newserver.com;
}
}
server {
listen 80;
server_name newserver.com;
# Sie können den ursprünglichen Host aus dieser Variablen abrufen.
add_header x-original-host $server_redirect_original_host;
location / {
proxy_pass http://upstream.com;
}
}
}
Bedingte Umleitung
Leiten Sie Anfragen basierend auf dem Vorhandensein eines bestimmten Headers um.
http {
server {
listen 80;
server_name example.com;
# Umleiten, wenn die Anfrage den Header 'X-Redirect' hat und der Wert nicht 0 oder leer ist.
server_redirect newserver.com if=$http_x_redirect;
# Sie können ngx_http_var_module verwenden, um Urteilvariablen basierend auf Bedingungen zu generieren.
# https://git.hanada.info/hanada/ngx_http_var_module
# var $is_ipv6 if_find $remote_addr :;
# server_redirect newserver.com if=$is_ipv6;
# Dieses Modul tritt nach dem real_ip-Modul in Kraft,
# Daher wirken die Direktiven des real_ip-Moduls auf den Server, bevor die Serverumleitung erfolgt.
# real_ip_header x-client-ip;
location / {
proxy_pass http://newserver.com;
}
}
server {
listen 80;
server_name newserver.com;
# Sie können den ursprünglichen Host aus dieser Variablen abrufen.
add_header x-original-host $server_redirect_original_host;
location / {
proxy_pass http://upstream.com;
}
}
}
Zeitgesteuerte Umleitung
Leiten Sie die aktuelle Anfrage an einen anderen Server vom ersten Anfragepfad um.
Wenn die Anfrage http://example.com/newserver.com/test?arg=1 ist, wird sie an http:///newserver.com/test?arg=1 umgeleitet. Dieser Prozess ist intern und es erfolgt keine 302-Umleitung.
http {
server {
listen 80;
server_name example.com;
# Aktivieren Sie die zeitgesteuerte Umleitung.
schedule_redirect on;
# Anfragen erreichen diesen Punkt nicht, es sei denn, der erste Pfad im Anfragepfad existiert nicht oder der Host im ersten Pfad ist ungültig.
return 400 "Anfragepfad ungültig";
}
server {
listen 80;
server_name newserver.com;
# Sie können den ursprünglichen Host aus dieser Variablen abrufen.
add_header x-original-host $server_redirect_original_host;
location / {
proxy_pass http://upstream.com;
}
}
}
Konfiguration
Direktive: server_redirect
Syntax: server_redirect target_host [if=condition]
Standard: -
Kontext: server
Leiten Sie die aktuelle Anfrage an einen anderen Server um. Der Zielserver muss denselben Listening-Port wie der aktuelle Server haben.
Der Zielhost sollte ein spezifischer Hostname sein, genau wie der Host im Anfrageheader. Selbst wenn der Zielserver, zu dem Sie umleiten möchten, ein Wildcard-Domainname oder ein regulärer Ausdruck ist.
Wenn der Zielserver nicht gefunden werden kann, wird zur Standardserver umgeleitet.
Der if-Parameter ermöglicht eine bedingte Umleitung. Eine Anfrage wird nicht umgeleitet, wenn die Bedingung auf „0“ oder einen leeren String ausgewertet wird. Darüber hinaus können Sie auch die Form if!= verwenden, um negative Urteile zu fällen.
Hier ist ein Beispiel:
server_redirect newserver.com if=$http_server_redirect;
Dieses Beispiel leitet Anfragen an newserver.com um, wenn der Header Server-Redirect einen Wert hat und dieser Wert nicht 0 ist.
Direktive: schedule_redirect
Syntax: schedule_redirect on | off
Standard: schedule_redirect off
Kontext: server
Leiten Sie die aktuelle Anfrage an einen anderen Server vom ersten Anfragepfad um.
Wenn aktiviert, wird beim Zugriff auf http://a.com/b.com/ die Anfrage an http://b.com/ umgeleitet. Wenn der Zielserver nicht gefunden werden kann, wird zur Standardserver umgeleitet.
Wenn die Direktive server_redirect vorhanden ist und die Umleitungsbedingungen erfüllt sind, wird server_redirect zuerst ausgeführt.
Wenn der Anfragepfad den ersten Pfad nicht hat (z. B. die Startseite), erfolgt keine Umleitung.
Nach der Umleitung wird sogar $request_uri vom ersten Pfad bereinigt. Sie können den ursprünglichen Anfragepfad nur in der Anfragezeilenvariablen $request finden.
Variable: $server_redirect_original_host
Beinhaltet den ursprünglichen Wert der Variablen $host, bevor die Umleitung erfolgt.
GitHub
Sie finden möglicherweise zusätzliche Konfigurationstipps und Dokumentationen für dieses Modul im GitHub-Repository für nginx-module-server-redirect.