
一、引言
Caddy 是一款現(xiàn)代化的 Web 服務(wù)器,以極簡(jiǎn)的配置和自動(dòng) HTTPS 特性著稱。本文將結(jié)合實(shí)際操作,詳細(xì)介紹在 Windows 系統(tǒng)中使用 Caddy 部署網(wǎng)站的全流程,涵蓋安裝、配置、證書申請(qǐng)及常見問題解決,幫助開發(fā)者快速上手。
二、Caddy 安裝與基礎(chǔ)配置
2.1 安裝 Caddy
方法一:使用 Chocolatey 包管理器(推薦)
以管理員身份打開 PowerShell,執(zhí)行以下命令安裝 Chocolatey:
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
安裝 Caddy:
驗(yàn)證安裝:
方法二:手動(dòng)安裝
從??Caddy 官網(wǎng)?下載 Windows 64 位 ZIP 包,解壓后將?caddy.exe
?移動(dòng)至?C:\Caddy
?目錄。
將?C:\Caddy
?添加到系統(tǒng)環(huán)境變量?Path
?中。
2.2 創(chuàng)建首個(gè)網(wǎng)站
創(chuàng)建網(wǎng)站根目錄?C:\Website
,并在其中添加?index.html
:
<h1>Hello from Caddy!</h1>
在桌面創(chuàng)建?Caddyfile
(無擴(kuò)展名),輸入以下內(nèi)容:
localhost {
? ?root * C:\Website
? ?file_server
}
啟動(dòng) Caddy:
caddy run --config "$env:USERPROFILE\Desktop\Caddyfile"
訪問?http://localhost
,應(yīng)看到網(wǎng)頁(yè)內(nèi)容。
三、HTTPS 配置與證書自動(dòng)申請(qǐng)
3.1 自動(dòng)獲取 Let's Encrypt 證書
默認(rèn)情況下,Caddy 會(huì)自動(dòng)為域名申請(qǐng) Let's Encrypt 證書。修改?Caddyfile
?為真實(shí)域名:
www.sdyzco.com.cn {
? ?root * C:\Website
? ?file_server
? ?tls wh@sdyzco.com.cn ?# 填寫郵箱用于證書管理
}
重啟 Caddy 后,訪問?https://www.sdyzco.com.cn
,瀏覽器會(huì)顯示安全鎖標(biāo)志。
3.2 處理 80 端口被占用問題
若 80 端口被其他服務(wù)占用,可僅使用 443 端口(TLS-ALPN-01 驗(yàn)證):
www.sdyzco.com.cn {
? ?root * C:\Website
? ?file_server
? ?tls wh@sdyzco.com.cn
? ?http_port 0 ?# 禁用 80 端口
}
3.3 使用阿里云 DNS 驗(yàn)證(高級(jí)場(chǎng)景)
當(dāng)服務(wù)器無法開放 80/443 端口時(shí),可通過 DNS 驗(yàn)證申請(qǐng)證書:
安裝 Caddy 插件:
go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest
xcaddy build --with github.com/caddy-dns/alidns
配置?Caddyfile
:
www.sdyzco.com.cn {
? ?root * C:\Website
? ?file_server
? ?tls {
? ? ? ?dns alidns {
? ? ? ? ? ?access_key_id YOUR_ALIYUN_ACCESS_KEY
? ? ? ? ? ?access_key_secret YOUR_ALIYUN_SECRET_KEY
? ? ? ?}
? ?}
}
四、多域名與子域名配置
4.1 主域名與 www 域名統(tǒng)一
sdyzco.com.cn, www.sdyzco.com.cn {
? ?root * C:\Website
? ?file_server
? ?tls wh@sdyzco.com.cn
}
4.2 子域名獨(dú)立配置
app.sdyzco.com.cn {
? ?root * C:\AppWebsite
? ?file_server
? ?tls wh@sdyzco.com.cn
}
五、性能優(yōu)化與安全配置
5.1 通用安全頭設(shè)置
通過導(dǎo)入配置片段添加安全響應(yīng)頭:
(security) {
? ?header {
? ? ? ?Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
? ? ? ?X-Frame-Options "SAMEORIGIN"
? ? ? ?-Server ?# 移除服務(wù)器標(biāo)識(shí)
? ?}
}
www.sdyzco.com.cn {
? ?import security
? ?# 其他配置
}
5.2 靜態(tài)資源壓縮與緩存
(compression) {
? ?encode gzip zstd
? ?minimum_length 256
}
(static_assets) {
? ?@static path *.js *.css *.png
? ?header @static Cache-Control "public, max-age=31536000"
}
www.sdyzco.com.cn {
? ?import compression
? ?import static_assets
? ?# 其他配置
}
六、服務(wù)化運(yùn)行與日志管理
6.1 設(shè)置為 Windows 服務(wù)
使用?nssm
?將 Caddy 配置為開機(jī)自啟服務(wù):
choco install nssm
nssm install caddy
# 在圖形界面中指定 Caddy 路徑和配置文件路徑
6.2 日志分割與存儲(chǔ)
www.sdyzco.com.cn {
? ?log {
? ? ? ?output file "C:/Logs/caddy.log" {
? ? ? ? ? ?roll_size 50MiB ?# 單文件最大 50MB
? ? ? ? ? ?roll_keep 14 ? ? # 保留 14 個(gè)歷史文件
? ? ? ?}
? ?}
? ?# 其他配置
}
七、常見問題與解決方案
7.1 證書申請(qǐng)失敗
7.2 404 錯(cuò)誤
八、總結(jié)
Caddy 通過極簡(jiǎn)的配置和自動(dòng)化特性,大幅降低了 HTTPS 部署門檻。本文覆蓋了 Windows 環(huán)境下的安裝、證書申請(qǐng)、多域名配置及性能優(yōu)化,開發(fā)者可根據(jù)實(shí)際需求靈活調(diào)整配置。建議在生產(chǎn)環(huán)境中結(jié)合云服務(wù)商的安全組策略,并定期監(jiān)控證書狀態(tài),確保服務(wù)穩(wěn)定運(yùn)行。
閱讀原文:https://blog.51cto.com/wahu/13967500
該文章在 2025/8/13 17:06:07 編輯過