У меня есть NGINX, прослушивающий порт 441, и SSLH, прослушивающий порты: 441 (https), 442 (ssh) и, наконец, STUNNEL, прослушивающий порт 443, перенаправляющий на SSLH (порт 2243).
Конфигурация STUNNEL:
pid = /var/run/stunnel.pid
сертификат = /etc/letsencrypt/live/f1.example.com/fullchain.pem
ключ = /etc/letsencrypt/live/f1.example.com/privkey.pem
[sslh]
принять = 443
подключить = 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:
сервер {
имя_сервера f1.example.com;
слушать 441;
журнал_доступа /var/log/nginx/f1.access;
журнал_ошибок /var/log/nginx/f1.error;
местоположение /администратор/ {
прокси_пароль http://127.0.0.1:10000/;
proxy_set_header Хост $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 $ схема;
}
}
сервер {
слушать 80;
вернуть 302 https://$host$request_uri;
}
Как видите, я запускаю приложение WEBMIN по пути /admin/ с обратным прокси-сервером, используя NGINX. Моя проблема здесь в том, что когда я просто набираю f1.example.com/admin в браузере, он перенаправляет на версию HTTPS, которая https://f1.example.com/admin.
После успешного входа он перенаправляет на http://f1.example.com:441/admin/sysinfo.cgi?xnavigation=1 который находится в HTTP с портом 441 (мне интересно, как здесь вставляется номер порта). Страница загружается нормально, но не в HTTPS. Мне нужно вручную удалить номер порта и нажать Enter, чтобы обновить его до HTTPS.
Как я могу заставить это работать с HTTPS гладко? Какие изменения мне нужно внести в файл конфигурации NGINX? Я чувствую, что мне здесь чего-то не хватает.