
Ich habe ein NGINX, das auf Port 441 lauscht, und SSLH, das auf den Ports 441 (https), 442 (ssh) lauscht, und schließlich STUNNEL, das auf Port 443 lauscht und an SSLH (Port 2243) weiterleitet.
STUNNEL-Konfiguration:
pid = /var/run/stunnel.pid
cert = /etc/letsencrypt/live/f1.example.com/fullchain.pem
key = /etc/letsencrypt/live/f1.example.com/privkey.pem
[sslh]
accept = 443
connect = 127.0.0.1:2243
SSLH-Konfiguration:
DAEMON_OPTS="--user sslh --listen 127.0.0.1:2243 --ssh 127.0.0.1:442 --ssl 127.0.0.1:441 --pidfile /var/run/sslh/sslh.pid"
NGINX-Konfiguration:
server {
server_name f1.example.com;
listen 441;
access_log /var/log/nginx/f1.access;
error_log /var/log/nginx/f1.error;
location /admin/ {
proxy_pass http://127.0.0.1:10000/;
proxy_set_header Host $host;
proxy_redirect http://$host:10000/ /admin/;
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 80;
return 302 https://$host$request_uri;
}
Wie Sie sehen, führe ich eine WEBMIN-App im Pfad /admin/ mit einem Reverse-Proxy unter Verwendung von NGINX aus. Mein Problem hierbei ist, dass wenn ich einfach f1.example.com/admin in den Browser eingebe, es zur HTTPS-Version umleitet, diehttps://f1.example.com/admin.
Nach einem erfolgreichen Login erfolgt die Weiterleitung zuhttp://f1.example.com:441/admin/sysinfo.cgi?xnavigation=1das ist in HTTP mit Port 441 (ich frage mich, wie die Portnummer hier eingefügt wird). Die Seite wird einwandfrei geladen, ist aber nicht in HTTPS. Ich muss die Portnummer manuell entfernen und die Eingabetaste drücken, um sie auf HTTPS zu aktualisieren.
Wie kann ich das reibungslos mit HTTPS zum Laufen bringen? Welche Änderungen muss ich an meiner NGINX-Konfigurationsdatei vornehmen? Ich habe das Gefühl, dass ich hier etwas übersehe.
Antwort1
port_in_redirect off;
Dies wurde zur Nginx-Konfiguration hinzugefügt und funktioniert jetzt einwandfrei!