debain10 系统code-server云IDE使用nginx服务器配置mkcert证书将http升级https
第一步, 修改code-server配置
vi ~/.config/code-server/config.yaml
配置修改为
bind-addr: 0.0.0.0:8080
auth: password
password: qhiH2b2uXxTHFT
cert: false
其中,0.0.0.0
代表监听所有,8080
表示端口,auth: password
代表通过密码访问。重新启动code-server
。
# 停止code-server
ps -ef | grep code-server | grep -v grep | awk '{print $2}' | sed -n '1p' | xargs kill -9
# 启动code-server
nohup /usr/bin/code-server --host 0.0.0.0 --port 8080 --auth password
第二步,通过nginx反向代理code-server
安装nginx
Nginx (engine x) 是一款轻量级的 Web 服务器 、反向代理服务器及电子邮件(IMAP/POP3)代理服务器。
sudo apt update
sudo apt install -y nginx
创建新站点配置文件code-server.conf
,修改配置文件
vi code-server.conf
sudo cp code-server.conf /etc/nginx/sites-available/
内容
server {
listen 80;
listen [::]:80;
server_name mydomain.com;
location / {
proxy_pass http://localhost:8080/;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
proxy_set_header Accept-Encoding gzip;
}
}
内网的机器可以用内网穿透工具挂载域名。
# 创建软链接到sites-enabled使用配置生效
sudo ln -s /etc/nginx/sites-available/code-server.conf /etc/nginx/sites-enabled/code-server.conf
# 重启nginx服务器
sudo systemctl restart nginx
现在已经可以用普通端口访问了。接下来配置证书。
第三步,mkcert创建证书
mkcert 是一个简单的零配置工具,由 Filippo Valsorda 使用 Go 编写,用于制作本地浏览器可信 HTTPS SSL 证书,无需任何配置。
# 更新源
sudo apt-get update
# 安装certutil工具
sudo apt install libnss3-tools
下载mkcert二进制文件或者自己编译,改名为mkcert
,添加可执行权限,移动到/usr/local/bin/
目录
# 添加可执行权限
chmod +x mkcert-v-linux-amd64
# 改名
mv mkcert-v-linux-amd64 mkcert
# 移动
sudo cp mkcert /usr/local/bin/mkcert
创建本地CA
mkcert -install
生成证书
# 把mydomain.com改成你自己的域名
mkcert mydomain.com
在当前目录mkcert
生成了两个证书相关文件。
mydomain.com-key.pem
mydomain.com.pem
查看rootCA
文件路径
$ mkcert -CAROOT
/home/zzyy/.local/share/mkcert
$ ls /home/zzyy/.local/share/mkcert
rootCA-key.pem rootCA.pem
将 rootCA.pem
复制到 PC 上,并将其后缀改为 .crt
。
双击 rootCA.crt
,根据提示安装证书,步骤如下:
安装证书--当前用户--将证书放入下列存储位置--浏览--受信任的证书颁发机构--确定
删除证书的步骤
按 “Windows 键 + R” 调出运行框,输入 certmgr.msc 命令。打开证书控制台。选择刚才导入的证书删除即可。
第四步,https反向代理
一些对安全性要求比较高的站点,可能会使用 HTTPS(一种使用 ssl 通信标准的安全 HTTP 协议)。
这里不科普 HTTP 协议和 SSL 标准。但是,使用 nginx 配置 https 需要知道几点:
- HTTPS 的固定端口号是 443,不同于 HTTP 的 80 端口
- SSL 标准需要引入安全证书,所以在 nginx.conf 中你需要指定证书和它对应的 key
其他和 http 反向代理基本一样,只是在 Server
部分配置有些不同。
修改code-server.conf
配置文件。
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name mydomain.com;
ssl_certificate /home/user/mydomain.com.pem;
ssl_certificate_key /home/user/mydomain.com-key.pem;
location / {
proxy_pass http://localhost:8080/;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
proxy_set_header Accept-Encoding gzip;
}
}
重启nginx
sudo systemctl restart nginx
重启浏览器再次访问,可以看到连接已经变为安全。