
포트 441에서 수신하는 NGINX와 포트 441(https), 442(ssh)에서 수신하는 SSLH가 있고 마지막으로 SSLH(포트 2243)로 전달되는 포트 443에서 수신하는 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에서는 로드되지 않습니다. 포트 번호를 수동으로 제거하고 Enter 키를 눌러 HTTPS로 업그레이드해야 합니다.
이것이 HTTPS와 원활하게 작동하도록 하려면 어떻게 해야 합니까? NGINX conf 파일을 어떻게 변경해야 합니까? 여기에 뭔가 빠진 것 같은 느낌이 듭니다.
답변1
port_in_redirect off;
이것을 nginx conf에 추가하면 이제 매력처럼 작동합니다!