Nginx reverse proxy an anderen nginx reverse proxy
Hallo zusammen,
ich würde gerne einen Nginx-Reverse Proxy einrichten, der Anfragen je nach Domain an einen anderen Nginx-Reverse proxy weiterleitet.
Also folgendermaßen:
Reverse-Proxy 1:
*.domain1.de --> Reverse-Proxy2 --> sub1.domain1.de --> Host1
*.domain2.de --> Reverse-Proxy3 --> sub1.domain2.de --> Host2
Dabei soll der RP1 nur durchleiten, alles andere soll in den dahinter gelagerten Rps passieren (SSL, etc.)
Gibt es für nginx eine entsprechende Konfiguration, oder gibt es einen anderen Reverse-Proxy mit dem das einfach umzusetzen ist?
Danke schonmal und viele Grüße
Sami
ich würde gerne einen Nginx-Reverse Proxy einrichten, der Anfragen je nach Domain an einen anderen Nginx-Reverse proxy weiterleitet.
Also folgendermaßen:
Reverse-Proxy 1:
*.domain1.de --> Reverse-Proxy2 --> sub1.domain1.de --> Host1
*.domain2.de --> Reverse-Proxy3 --> sub1.domain2.de --> Host2
Dabei soll der RP1 nur durchleiten, alles andere soll in den dahinter gelagerten Rps passieren (SSL, etc.)
Gibt es für nginx eine entsprechende Konfiguration, oder gibt es einen anderen Reverse-Proxy mit dem das einfach umzusetzen ist?
Danke schonmal und viele Grüße
Sami
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 670169
Url: https://administrator.de/contentid/670169
Ausgedruckt am: 16.12.2024 um 09:12 Uhr
7 Kommentare
Neuester Kommentar
Hi.
Nach folgendem Schema sollte das klappen, SSL Zeuch kannst du ja selbst anpassen. Die Doku ist dein Freund
https://nginx.org/en/docs/dirindex.html
Gruß gastric
Nach folgendem Schema sollte das klappen, SSL Zeuch kannst du ja selbst anpassen. Die Doku ist dein Freund
https://nginx.org/en/docs/dirindex.html
http {
server {
listen 80;
server_name *.domain1.de;
return 301 https://$host$request_uri;
}
server {
listen 80;
server_name *.domain2.de;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name *.domain1.de;
ssl_certificate /path/to/certificate1.crt;
ssl_certificate_key /path/to/privatekey1.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
proxy_pass http://sub1.domain1.de;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
server {
listen 443 ssl;
server_name *.domain2.de;
ssl_certificate /path/to/certificate2.crt;
ssl_certificate_key /path/to/privatekey2.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
proxy_pass http://sub1.domain2.de;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}
Moin,
Gruß,
Dani
danke für die Antwort. Mein Ziel ist es allerdings, dass SSL von den Reverse-Proxys in zweiter Reihe gemanaged wird.
Wie soll das funktionieren? Es wird zuerst der RP1, Port 80 angesprochen. Der leitet den Request an RP2, Port 80 weiter. Dort erfolgt eine Umleitung auf Port 443. D.h. es wir eine neue Verbindung aufgebaut und zwar am RP1. Sprich dort muss Port 443 mit einem gültigen Zertifikat vorhanden sein. Anderenfalls wird es zu einem Timeout/Error kommen.Gruß,
Dani
Kein Problem einfach die streaming Funktion von nginx nutzen, und SSL preread einschalten, dann kann anhand des SNI die aufgerufene Domain aus dem SSL stream gefiltert werden und anhand dessen auf das richtige Backend weitergeleitet werden.
https://nginx.org/en/docs/stream/ngx_stream_core_module.html
https://nginx.org/en/docs/stream/ngx_stream_core_module.html