Linux下用Nginx给ttyd设置SSL开启HTTPS访问
用nginx给ttyd实现https访问,99%的设置都和【Linux下用Nginx给File Browser设置SSL开启HTTPS访问】一样,直接照搬即可。但如果完全照搬,会发现https下登录ttyd以后,页面全黑,有一个浮窗显示【press enter to reconnect】,没有光标,也没有命令提示符。
很容易就明白出现这个问题是因为ttyd使用的是websocket协议,通过nginx代理转发以后出现了bug。
网上搜了一下解决方案,根据【这个页面】和【这个页面】上的两个解答,需要对nginx的配置内容稍微修改。
注意
- 设定域名为:
jackiechang.cn
- 设定外网端口为:
11111
- 设定内网端口为:
4533
配置文件
server {
listen [::]:11111 ssl;
server_name jackiechang.cn;
ssl_certificate ssl/jackiechang.cn.pem;
ssl_certificate_key ssl/jackiechang.cn.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
error_page 497 https://$host:$server_port$uri$is_args$args;
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_http_version 1.1;
proxy_pass http://localhost:4533;
}
}