Nginx proxypass langsam
Hallo,
ich wollte mal als reverse Proxy den nginx einrichten. Grundsätzlich funktioniert auch alles, aber leider zu langsam.
Diese Version mit der festen Adresse in proxy_pass geht schnell, wenn ich aber die Version mit der Variabel nutze dauert der gleiche Aufruf 1min ( 30 Resourcen werden geladen). Es wird die gleiche URL aufgerufen
http://cam1.home.XXXXX.de
Es scheint mir als ob das Auswerten der Variable das ganze ausbremst, geht jemand das Verhalten und eventuell eine Lösung?
nginx -version
nginx version: nginx/1.24.0
ich wollte mal als reverse Proxy den nginx einrichten. Grundsätzlich funktioniert auch alles, aber leider zu langsam.
server {
listen 80;
listen [::]:80;
server_name "~(?<host1>.*).home.XXXXX.de$";
location / {
#proxy_pass https:{{comment_single_line_double_slash:0}}
proxy_pass https://cam1.internal;
}
}
Diese Version mit der festen Adresse in proxy_pass geht schnell, wenn ich aber die Version mit der Variabel nutze dauert der gleiche Aufruf 1min ( 30 Resourcen werden geladen). Es wird die gleiche URL aufgerufen
http://cam1.home.XXXXX.de
Es scheint mir als ob das Auswerten der Variable das ganze ausbremst, geht jemand das Verhalten und eventuell eine Lösung?
nginx -version
nginx version: nginx/1.24.0
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 43055294217
Url: https://administrator.de/forum/nginx-proxypass-langsam-43055294217.html
Ausgedruckt am: 22.12.2024 um 02:12 Uhr
18 Kommentare
Neuester Kommentar
Hallo.
Der Regex hat ein paar Fehler, ändere mal zu
hilft das?
Gibt es noch andere Server-Blocks?
Was sagt das Debug-Log?
Gruß h.
Der Regex hat ein paar Fehler, ändere mal zu
server_name "~^(?<host1>.+)\.home\.XXXXX\.de$"
Gibt es noch andere Server-Blocks?
Was sagt das Debug-Log?
Gruß h.
muss ich erst mal schauen, wo ich das aktiviere.
/var/log/nginx/error.log
Nee das regluäre Log reicht nicht
https://docs.nginx.com/nginx/admin-guide/monitoring/debugging/#:~:text=T ....
https://docs.nginx.com/nginx/admin-guide/monitoring/debugging/#:~:text=T ....
Das könnte an der Namensauflösung liegen.
Funktioniert die denn grundsätzlich auf dem nginx-System halbwegs schnell? Eventuell ist da ein primärer DNS-Server hinterlegt, der ziemlich langsam ist.
Ist auf dem System systemd-resolved aktiviert? Wenn nicht den mal aktivieren, nginx neustarten und gucken ob es dann schneller geht.
Funktioniert die denn grundsätzlich auf dem nginx-System halbwegs schnell? Eventuell ist da ein primärer DNS-Server hinterlegt, der ziemlich langsam ist.
Ist auf dem System systemd-resolved aktiviert? Wenn nicht den mal aktivieren, nginx neustarten und gucken ob es dann schneller geht.
Den Host-Header liest nginx ja eh aus dem Request aus, wozu sollte da zusätzlich noch eine DNS Abfrage dessen stattfinden außer für den internen? Kann ich hier im Test mit tcpdump auch nicht bestätigen.
Schaden kann's aber nicht wenn du es mal damit zur Sicherheit bei dir checkst.
Schaden kann's aber nicht wenn du es mal damit zur Sicherheit bei dir checkst.
Schreib das stattdessen mal so, dann muss der Interpreter nicht alle möglichen Variablen Varianten durchorgeln
Aber selbst wenn, 1 Minute wird's dafür auch nicht brauchen da wird ein anderes Problem vorliegen.
Was sagt nun das Debug Log? Und das journal?
Mach auch testweise einen Tcpdump und schau dir das in Wireshark an.
proxy_pass "https://${host1}.internal";
Aber selbst wenn, 1 Minute wird's dafür auch nicht brauchen da wird ein anderes Problem vorliegen.
Was sagt nun das Debug Log? Und das journal?
Mach auch testweise einen Tcpdump und schau dir das in Wireshark an.
Zitat von @Marcus78:
Mach auch testweise einen Tcpdump und schau dir das in Wireshark an.
auf was sollte ich da filtern? DNS läuft ja nur über loopback. Browser zeigt mir ja die Zeiten an. Und daten an cam1 sind verschlüsselt.Erst mal nicht filtern um zu sehen was die Maschine alles macht. Nur um sicherzugehen das da Netzwerktechnisch nichts schief läuft. Zum Entschlüsseln brauchst du nur die SSL Session Keys aufzeichnen und Wireshark in der Config übergeben, schon siehst du alles im Klartext
https://knowledgebase.paloaltonetworks.com/KCSArticleDetail?id=kA14u0000 ...
Schalte mal das buffering ab
Wieso überhaupt intern https und extern dann http?
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header Connection "upgrade";
proxy_buffering off;
proxy_pass "https://${host1}.internal";
Wieso überhaupt intern https und extern dann http?
so hier noch der tcpdump vom LO
Nicht nur lokal auch sondern auch was an den externen iFs zum Zeitpunkt passiert.