marcus78
Goto Top

Nginx proxypass langsam

Hallo,

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

Content-ID: 43055294217

Url: https://administrator.de/forum/nginx-proxypass-langsam-43055294217.html

Ausgedruckt am: 22.12.2024 um 02:12 Uhr

Marcus78
Marcus78 07.05.2024 um 08:04:06 Uhr
Goto Top
Leider macht das Forum die die wichtige Zeile kaputt

die Auskommentierte sollte so aussehen

proxy_pass https://$host1.internal;
13034433319
13034433319 07.05.2024 aktualisiert um 08:34:01 Uhr
Goto Top
Hallo.
Der Regex hat ein paar Fehler, ändere mal zu
server_name "~^(?<host1>.+)\.home\.XXXXX\.de$"  
hilft das?
Gibt es noch andere Server-Blocks?
Was sagt das Debug-Log?

Gruß h.
Marcus78
Marcus78 07.05.2024 um 08:55:58 Uhr
Goto Top
Hallo.
Der Regex hat ein paar Fehler, ändere mal zu
1
server_name "~^(?<host1>.+)\.home\.XXXXX\.de$"
hilft das?
nein, leider nicht . Richtig der punkt muss ja gequoted werden.

Gibt es noch andere Server-Blocks?
nein

Was sagt das Debug-Log?
muss ich erst mal schauen, wo ich das aktiviere.
9697748851
9697748851 07.05.2024 um 09:18:49 Uhr
Goto Top
muss ich erst mal schauen, wo ich das aktiviere.


/var/log/nginx/error.log
Marcus78
Marcus78 07.05.2024 um 09:28:48 Uhr
Goto Top
Zitat von @9697748851:

muss ich erst mal schauen, wo ich das aktiviere.


/var/log/nginx/error.log

Es kommt ja keine fehler, damit steht auch nicht in error.log drin. Es ist nur langsam.
13034433319
13034433319 07.05.2024 aktualisiert um 09:53:30 Uhr
Goto Top
LordGurke
LordGurke 07.05.2024 um 09:54:12 Uhr
Goto Top
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.
Marcus78
Marcus78 07.05.2024 um 10:01:02 Uhr
Goto Top
LordGurke 07.05.2024 um 09:54:12 Uhr
MARKIERE ALS 'LÖSUNG'

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.


es wird ja immer der gleiche Name verwendet, nur einmal mit Variable und einmal ohne.
Nach dem die Variabel eingesetzt wird, steht also genau das gleiche drin.
13034433319
13034433319 07.05.2024 aktualisiert um 10:12:01 Uhr
Goto Top
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.
Marcus78
Marcus78 07.05.2024 um 10:07:39 Uhr
Goto Top
wozu sollte da zusätzlich noch eine DNS Abfrage

er muss ja eine Verbindung zu den nächsten Server aufbauen. Also muss er ja

https://cam1.internal auflösen, aber es sollte kein Unterschied zu https://$host1.internal sein, wenn in $host cam1 steht
Marcus78
Marcus78 07.05.2024 um 10:53:08 Uhr
Goto Top
server {
        listen 80;
        listen [::]:80;

        root /var/www/html;

        server_name *.home.XXXX.de;

        location / {
                set $host1 cam1;
                proxy_pass https://$host1.internal;
        }
}

Auch diese Version ist langsam. Es scheint also nur mit der Variabel und nicht am Regex zu hängen
13034433319
13034433319 07.05.2024 aktualisiert um 11:19:50 Uhr
Goto Top
Schreib das stattdessen mal so, dann muss der Interpreter nicht alle möglichen Variablen Varianten durchorgeln
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.
Marcus78
Marcus78 07.05.2024 um 11:25:38 Uhr
Goto Top
Schreib das stattdessen mal so, dann muss der Interpreter nicht alle möglichen Variablen Varianten durchorgeln
1
proxy_pass "https://${host1}.internal";

das gleiche, langsam.

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?
zum Debug bin ich noch nicht gekommen.

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.
Nach was sollte ich da suchen? Ohne Variable geht es ja schnell.

Ich schaue mal ob ich mit dem Debug ein paar mehr infos bekomme ...
13034433319
13034433319 07.05.2024 aktualisiert um 11:34:49 Uhr
Goto Top
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 ...
Marcus78
Marcus78 07.05.2024 um 12:25:02 Uhr
Goto Top
# schnell
set $host1 cam1;
proxy_pass https://cam1.internal;

[07/May/2024:11:44:24 +0200] "GET / HTTP/1.1" 200 7266 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0"rt=0.712 uct="0.704" uht="0.709" urt="0.712"  
[07/May/2024:11:44:24 +0200] "GET /css/glDatePicker.default.css?timeVersion=1652772242477 HTTP/1.1" 200 8171 "http://cam1.home.itdau.de/" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0"rt=0.008 uct="0.004" uht="0.008" urt="0.008"  
[07/May/2024:11:44:26 +0200] "GET /css/skin.css?timeVersion=1652772242477 HTTP/1.1" 200 4322 "http://cam1.home.itdau.de/" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0"rt=1.277 uct="0.008" uht="1.277" urt="1.277"  
[07/May/2024:11:44:26 +0200] "GET /css/reset.css?timeVersion=1652772242477 HTTP/1.1" 200 799 "http://cam1.home.itdau.de/" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0"rt=1.963 uct="1.285" uht="1.962" urt="1.962"  
[07/May/2024:11:44:26 +0200] "GET /css/index.css?timeVersion=1652772242477 HTTP/1.1" 200 54630 "http://cam1.home.itdau.de/" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0"rt=1.982 uct="1.305" uht="1.968" urt="1.982"  
[07/May/2024:11:44:26 +0200] "GET /css/channel.css?timeVersion=1652772242477 HTTP/1.1" 200 2177 "http://cam1.home.itdau.de/" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0"rt=1.983 uct="1.335" uht="1.983" urt="1.983"  
[07/May/2024:11:44:26 +0200] "GET /css/accountLogin.4cd3a0d6.css HTTP/1.1" 200 183597 "http://cam1.home.itdau.de/" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0"rt=2.056 uct="1.987" uht="2.006" urt="2.050"  
[07/May/2024:11:44:26 +0200] "GET /css/bc_css.css?timeVersion=1652772242477 HTTP/1.1" 200 17982 "http://cam1.home.itdau.de/" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0"rt=2.070 uct="2.011" uht="2.069" urt="2.070"  
[07/May/2024:11:44:27 +0200] "GET /js/accountLogin.082ba63f.js HTTP/1.1" 200 1051702 "http://cam1.home.itdau.de/" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0"rt=1.124 uct="0.713" uht="0.783" urt="1.124"  
[07/May/2024:11:44:27 +0200] "GET /js/chunk-vendors.99be692d.js HTTP/1.1" 200 954471 "http://cam1.home.itdau.de/" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0"rt=0.720 uct="0.075" uht="0.455" urt="0.720"  
[07/May/2024:11:44:27 +0200] "GET /css/login.css?timeVersion=1652772242477 HTTP/1.1" 200 1433 "http://cam1.home.itdau.de/" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0"rt=0.713 uct="0.417" uht="0.713" urt="0.713"  
[07/May/2024:11:44:27 +0200] "GET /css/my_bootstrap.min.css?timeVersion=1652772242477 HTTP/1.1" 200 48865 "http://cam1.home.itdau.de/" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0"rt=0.694 uct="0.672" uht="0.688" urt="0.694"  
[07/May/2024:11:44:27 +0200] "GET /css/view.css?timeVersion=1652772242477 HTTP/1.1" 200 7142 "http://cam1.home.itdau.de/" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0"rt=0.615 uct="0.595" uht="0.615" urt="0.615"  
[07/May/2024:11:44:27 +0200] "GET /css/dialog.css?timeVersion=1652772242477 HTTP/1.1" 200 1755 "http://cam1.home.itdau.de/" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0"rt=0.595 uct="0.586" uht="0.595" urt="0.595"  
[07/May/2024:11:44:27 +0200] "GET /css/contextmenu.css?timeVersion=1652772242477 HTTP/1.1" 200 764 "http://cam1.home.itdau.de/" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0"rt=0.308 uct="0.288" uht="0.308" urt="0.308"  

# langsam
set $host1 cam1;
proxy_pass https://${host1}.internal;

[07/May/2024:11:55:52 +0200] "GET / HTTP/1.1" 200 7266 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0"rt=0.679 uct="0.669" uht="0.675" urt="0.678"  
[07/May/2024:11:55:55 +0200] "GET /css/glDatePicker.default.css?timeVersion=1652772242477 HTTP/1.1" 200 8171 "http://cam1.home.itdau.de/" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0"rt=3.301 uct="1.972" uht="3.299" urt="3.300"  
[07/May/2024:11:55:55 +0200] "GET /css/channel.css?timeVersion=1652772242477 HTTP/1.1" 200 2177 "http://cam1.home.itdau.de/" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0"rt=3.292 uct="2.581" uht="3.292" urt="3.292"  
[07/May/2024:11:55:56 +0200] "GET /css/skin.css?timeVersion=1652772242477 HTTP/1.1" 200 4322 "http://cam1.home.itdau.de/" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0"rt=3.945 uct="2.589" uht="3.946" urt="3.946"  
[07/May/2024:11:55:56 +0200] "GET /css/bc_css.css?timeVersion=1652772242477 HTTP/1.1" 200 17982 "http://cam1.home.itdau.de/" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0"rt=3.970 uct="3.289" uht="3.969" urt="3.969"  
[07/May/2024:11:55:56 +0200] "GET /css/reset.css?timeVersion=1652772242477 HTTP/1.1" 200 799 "http://cam1.home.itdau.de/" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0"rt=3.980 uct="3.961" uht="3.979" urt="3.979"  
[07/May/2024:11:55:57 +0200] "GET /css/index.css?timeVersion=1652772242477 HTTP/1.1" 200 54630 "http://cam1.home.itdau.de/" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0"rt=4.633 uct="3.979" uht="4.615" urt="4.633"  
[07/May/2024:11:55:59 +0200] "GET /css/accountLogin.4cd3a0d6.css HTTP/1.1" 200 183597 "http://cam1.home.itdau.de/" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0"rt=3.371 uct="2.008" uht="3.292" urt="3.370"  
[07/May/2024:11:55:59 +0200] "GET /js/accountLogin.082ba63f.js HTTP/1.1" 200 1051702 "http://cam1.home.itdau.de/" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0"rt=3.676 uct="2.653" uht="3.375" urt="3.675"  
[07/May/2024:11:56:01 +0200] "GET /js/chunk-vendors.99be692d.js HTTP/1.1" 200 954471 "http://cam1.home.itdau.de/" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0"rt=4.610 uct="2.714" uht="4.322" urt="4.609"  
[07/May/2024:11:56:01 +0200] "GET /css/login.css?timeVersion=1652772242477 HTTP/1.1" 200 1433 "http://cam1.home.itdau.de/" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0"rt=5.251 uct="3.665" uht="5.250" urt="5.250"  
[07/May/2024:11:56:02 +0200] "GET /css/my_bootstrap.min.css?timeVersion=1652772242477 HTTP/1.1" 200 48865 "http://cam1.home.itdau.de/" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0"rt=5.970 uct="4.569" uht="5.962" urt="5.969"  
[07/May/2024:11:56:02 +0200] "GET /css/view.css?timeVersion=1652772242477 HTTP/1.1" 200 7142 "http://cam1.home.itdau.de/" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0"rt=5.317 uct="4.569" uht="5.316" urt="5.316"  
[07/May/2024:11:56:03 +0200] "GET /css/dialog.css?timeVersion=1652772242477 HTTP/1.1" 200 1755 "http://cam1.home.itdau.de/" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0"rt=3.988 uct="3.289" uht="3.987" urt="3.987"  
[07/May/2024:11:56:03 +0200] "GET /css/contextmenu.css?timeVersion=1652772242477 HTTP/1.1" 499 0 "http://cam1.home.itdau.de/" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0"rt=3.984 uct="3.682" uht="-" urt="3.984"  

man sieht sehr gut wie sich die urt zeiten unterscheiden.
https://docs.nginx.com/nginx/admin-guide/monitoring/logging/
Marcus78
Marcus78 07.05.2024 um 12:32:50 Uhr
Goto Top
so hier noch der tcpdump vom LO

12:30:10.037857 IP 127.0.0.1.44988 > 127.0.0.11.53: 40980+ A? cam1.internal. (31)
12:30:10.037908 IP 127.0.0.1.44988 > 127.0.0.11.53: 59789+ AAAA? cam1.internal. (31)
12:30:10.038004 IP 127.0.0.11.53 > 127.0.0.1.44988: 40980 1/0/0 A 192.168.3.121 (47)
12:30:10.038120 IP 127.0.0.11.53 > 127.0.0.1.44988: 59789 0/1/0 (80)
12:30:10.881741 IP 127.0.0.1.43060 > 127.0.0.11.53: 12622+ A? cam1.internal. (31)
12:30:10.881796 IP 127.0.0.1.43060 > 127.0.0.11.53: 13301+ AAAA? cam1.internal. (31)
12:30:10.881905 IP 127.0.0.11.53 > 127.0.0.1.43060: 12622 1/0/0 A 192.168.3.121 (47)
12:30:10.882027 IP 127.0.0.11.53 > 127.0.0.1.43060: 13301 0/1/0 (80)
12:30:41.349661 IP 127.0.0.1.44988 > 127.0.0.11.53: 24458+ A? cam1.internal. (31)
12:30:41.349716 IP 127.0.0.1.44988 > 127.0.0.11.53: 35461+ AAAA? cam1.internal. (31)
12:30:41.349819 IP 127.0.0.11.53 > 127.0.0.1.44988: 24458 1/0/0 A 192.168.3.121 (47)
12:30:41.350096 IP 127.0.0.11.53 > 127.0.0.1.44988: 35461 0/1/0 (80)
12:30:41.973680 IP 127.0.0.1.43060 > 127.0.0.11.53: 54767+ A? cam1.internal. (31)
12:30:41.973735 IP 127.0.0.1.43060 > 127.0.0.11.53: 51896+ AAAA? cam1.internal. (31)
12:30:41.973844 IP 127.0.0.11.53 > 127.0.0.1.43060: 54767 1/0/0 A 192.168.3.121 (47)
12:30:41.973967 IP 127.0.0.11.53 > 127.0.0.1.43060: 51896 0/1/0 (80)

sieht mir auch normal aus
13034433319
13034433319 07.05.2024 aktualisiert um 12:36:31 Uhr
Goto Top
Schalte mal das buffering ab
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.
Marcus78
Marcus78 07.05.2024 um 12:43:49 Uhr
Goto Top
Schalte mal das buffering ab
1
2
3
4
5
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";

ändert leider nichts.

Wieso überhaupt intern https und extern dann http?
später soll alles über https laufen, aber fürs mitlesen ist halt http einfacher. Die Kamera will aber zwingend https.

so hier noch der tcpdump vom LO
Nicht nur lokal auch sondern auch was an den externen iFs zum Zeitpunkt passiert.
nicht so einfach. da 2 Netzwerkkarten und ich auch über remote und vpn-tunnel verbunden bin.
(VPN ist nur für SSH, der Test läuft vom Browser direkt auf Interface 1 und die Camera hängt am Interface 2)

Da muss ich halt einige wegfiltern. Un dann möglichst von alles zum selbern Zeitpunkt.