debain10 系統(tǒng)code-server云IDE使用nginx服務(wù)器配置mkcert證書將http升級(jí)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代表監(jiān)聽所有,8080表示端口,auth: password代表通過密碼訪問。重新啟動(dòng)code-server。
# 停止code-server
ps -ef | grep code-server | grep -v grep | awk '{print $2}' | sed -n '1p' | xargs kill -9
# 啟動(dòng)code-server
nohup /usr/bin/code-server --host 0.0.0.0 --port 8080 --auth password
第二步,通過nginx反向代理code-server
安裝nginx
Nginx (engine x) 是一款輕量級(jí)的 Web 服務(wù)器 、反向代理服務(wù)器及電子郵件(IMAP/POP3)代理服務(wù)器。
sudo apt update
sudo apt install -y nginx
創(chuàng)建新站點(diǎn)配置文件code-server.conf,修改配置文件
vi code-server.conf
sudo cp code-server.conf /etc/nginx/sites-available/
內(nèi)容
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;
}
}
內(nèi)網(wǎng)的機(jī)器可以用內(nèi)網(wǎng)穿透工具掛載域名。
# 創(chuàng)建軟鏈接到sites-enabled使用配置生效
sudo ln -s /etc/nginx/sites-available/code-server.conf /etc/nginx/sites-enabled/code-server.conf
# 重啟nginx服務(wù)器
sudo systemctl restart nginx
現(xiàn)在已經(jīng)可以用普通端口訪問了。接下來配置證書。
第三步,mkcert創(chuàng)建證書
mkcert 是一個(gè)簡(jiǎn)單的零配置工具,由 Filippo Valsorda 使用 Go 編寫,用于制作本地瀏覽器可信 HTTPS SSL 證書,無需任何配置。
# 更新源
sudo apt-get update
# 安裝certutil工具
sudo apt install libnss3-tools
下載mkcert二進(jìn)制文件或者自己編譯,改名為mkcert,添加可執(zhí)行權(quán)限,移動(dòng)到/usr/local/bin/目錄
# 添加可執(zhí)行權(quán)限
chmod +x mkcert-v-linux-amd64
# 改名
mv mkcert-v-linux-amd64 mkcert
# 移動(dòng)
sudo cp mkcert /usr/local/bin/mkcert
創(chuàng)建本地CA
mkcert -install
生成證書
# 把mydomain.com改成你自己的域名
mkcert mydomain.com
在當(dāng)前目錄mkcert生成了兩個(gè)證書相關(guān)文件。
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 復(fù)制到 PC 上,并將其后綴改為 .crt。
雙擊 rootCA.crt,根據(jù)提示安裝證書,步驟如下:
安裝證書--當(dāng)前用戶--將證書放入下列存儲(chǔ)位置--瀏覽--受信任的證書頒發(fā)機(jī)構(gòu)--確定
刪除證書的步驟
按 “Windows 鍵 + R” 調(diào)出運(yùn)行框,輸入 certmgr.msc 命令。打開證書控制臺(tái)。選擇剛才導(dǎo)入的證書刪除即可。
第四步,https反向代理
一些對(duì)安全性要求比較高的站點(diǎn),可能會(huì)使用 HTTPS(一種使用 ssl 通信標(biāo)準(zhǔn)的安全 HTTP 協(xié)議)。
這里不科普 HTTP 協(xié)議和 SSL 標(biāo)準(zhǔn)。但是,使用 nginx 配置 https 需要知道幾點(diǎn):
- HTTPS 的固定端口號(hào)是 443,不同于 HTTP 的 80 端口
- SSL 標(biāo)準(zhǔn)需要引入安全證書,所以在 nginx.conf 中你需要指定證書和它對(duì)應(yīng)的 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
重啟瀏覽器再次訪問,可以看到連接已經(jīng)變?yōu)榘踩?/p>
參考資料
nginx將http升級(jí)到https并且同時(shí)支持http和https兩種請(qǐng)求、http自動(dòng)轉(zhuǎn)向https