SSLH と STUNNEL の背後で Nginx HTTPS を使用する方法

SSLH と STUNNEL の背後で Nginx HTTPS を使用する方法

ポート 441 でリッスンする NGINX、ポート 441 (https)、442 (ssh) でリッスンする SSLH、そして最後にポート 443 でリッスンして SSLH (ポート 2243) に転送する STUNNEL があります。

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

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"

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;
}

ご覧のとおり、私はNGINXを使用したリバースプロキシを使用して/admin/パスでWEBMINアプリを実行しています。ここでの問題は、ブラウザでf1.example.com/adminと入力すると、HTTPSバージョンにリダイレクトされることです。https://f1.example.com/admin

ログインに成功すると、http://f1.example.com:441/admin/sysinfo.cgi?xnavigation=1これはポート 441 の HTTP です (ここでポート番号がどのように挿入されるのか疑問に思います)。ページは正常に読み込まれますが、HTTPS ではありません。HTTPS にアップグレードするには、手動でポート番号を削除して Enter キーを押す必要があります。

これを HTTPS でスムーズに動作させるにはどうすればよいですか? NGINX conf ファイルにどのような変更を加える必要がありますか? 何かが足りないような気がします。

答え1

port_in_redirect off;

これを nginx conf に追加すると、問題なく動作するようになりました。

関連情報