debain10 系统code-server云IDE使用nginx服务器配置mkcert证书将http升级https

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

重启浏览器再次访问,可以看到连接已经变为安全。

参考资料

code-server文档

nginx将http升级到https并且同时支持http和https两种请求、http自动转向https

mkcert 使用指南:如何快速创建自签名 SSL 证书

如何使用 mkcert 创建 SSL 证书

nginx-tutorial

mkcert工具

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容