Como usar o Nginx HTTPS atrás de um SSLH e um STUNNEL

Como usar o Nginx HTTPS atrás de um SSLH e um STUNNEL

Eu tenho um NGINX escutando na porta 441 e SSLH escutando nas portas: 441(https), 442(ssh) e finalmente STUNNEL escutando na porta 443 encaminhando para SSLH (porta 2243).

Configuração do 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

Configuração 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"

Configuração 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 você pode ver, estou executando um aplicativo WEBMIN no caminho /admin/ com um proxy reverso usando NGINX. Meu problema aqui é quando eu apenas digito f1.example.com/admin no navegador, ele redireciona para a versão HTTPS que éhttps://f1.example.com/admin.

Após um login bem-sucedido, ele redireciona parahttp://f1.example.com:441/admin/sysinfo.cgi?xnavigation=1que está em HTTP com porta 441 (estou me perguntando como o número da porta foi inserido aqui). A página carrega bem, mas não está em HTTPS. Tenho que remover manualmente o número da porta e pressionar Enter para atualizá-lo para HTTPS.

Como posso fazer isso funcionar com HTTPS sem problemas? Quais são as alterações que preciso fazer em meu arquivo conf NGINX? Sinto que estou faltando alguma coisa aqui.

Responder1

port_in_redirect off;

Adicionado isso ao nginx conf e agora funciona perfeitamente!

informação relacionada