
Ich verwende Nginx zum Lastenausgleich/Reverse-Proxy einer Website.
Das Setup besteht aus 1 Maschine zum Lastenausgleich und 3 Maschinen zum Hosten der Webinhalte.
Die Site-Konfiguration ist wie folgt:
upstream api_app {
least_conn;
server sfront1.mydomain.org:5000;
server sfront2.mydomain.org:5000;
server sfront3.mydomain.org:5000;
}
server {
listen 80;
listen [::]:80;
server_name mydomain.org www.mydomain.org;
location / {
proxy_pass http://api_app;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /images {
alias /home/images/mangas;
try_files $uri /404Cover.jpg;
}
location /Images {
alias /home/images/mangas;
try_files $uri /404Cover.jpg;
}
location /Covers {
alias /home/images/light-novels;
try_files $uri /404Cover.jpg;
}
}
server {
listen 80 default_server;
# listen [::]:80 default_server deferred;
return 444;
}
Jetzt habe ich die Protokolle der Clients dieser API überprüft und sie erhalten zufällig 302/307 HTTP-Antworten.
Jetzt bin ich ziemlich sicher, dass das Backend diese nicht gesendet hat. Es liegt also wahrscheinlich an Nginx.
Irgendeine Idee, was diese Antworten sein könnten? Warum scheinen sie völlig zufällig zu sein?
Beide Nginx/Backends funktionieren nur in HTTP. Nicht in https.
Könnte dies etwas mit den beiden Zeilen in der Konfiguration zu tun haben, die ich nicht ganz verstehe:
proxy_set_header Upgrade $http_upgrade;
proxy_cache_bypass $http_upgrade;