
Tengo un NGINX escuchando en el puerto 441 y SSLH escuchando los puertos: 441 (https), 442 (ssh) y finalmente STUNNEL escuchando en el puerto 443 reenviando a SSLH (puerto 2243).
Configuración de STUNNEL:
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
Configuración SSLH:
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"
Configuración de NGINX:
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;
}
Como puede ver, estoy ejecutando una aplicación WEBMIN en la ruta /admin/ con un proxy inverso usando NGINX. Mi problema aquí es que cuando escribo f1.example.com/admin en el navegador, me redirige a la versión HTTPS, que eshttps://f1.example.com/admin.
Después de iniciar sesión correctamente, redirige ahttp://f1.example.com:441/admin/sysinfo.cgi?xnavigation=1que está en HTTP con el puerto 441 (me pregunto cómo se inserta aquí el número de puerto). La página se carga bien pero no está en HTTPS. Tengo que eliminar manualmente el número de puerto y presionar Intro para actualizarlo a HTTPS.
¿Cómo puedo hacer que esto funcione con HTTPS sin problemas? ¿Cuáles son los cambios que necesito hacer en mi archivo de configuración NGINX? Siento que me falta algo aquí.
Respuesta1
port_in_redirect off;
¡Se agregó esto a nginx conf y ahora funciona de maravilla!