[{"data":1,"prerenderedAt":897},["ShallowReactive",2],{"doc-page:\u002Fdocs\u002Fcertbot-ssl":3},{"doc":4,"prev":865,"next":869,"resolvedType":8,"readingMinutes":151,"audience":873,"checklist":877,"related":881},{"path":5,"title":6,"description":7,"docType":8,"resourceKind":9,"categoryId":10,"categoryLabel":11,"updatedAt":12,"publishedAt":12,"icon":13,"body":14},"\u002Fdocs\u002Fcertbot-ssl","SSL 证书与 HTTPS","Let's Encrypt 免费证书申请、Certbot 自动续期与 Cloudflare DNS 验证","article",null,"infra-deployment","服务器与部署","2026-02-27","i-carbon-cloud",{"type":15,"value":16,"toc":839},"minimark",[17,21,25,30,46,49,52,71,76,116,120,173,176,180,200,204,233,236,240,243,259,262,266,269,272,288,292,299,316,332,335,382,385,442,445,448,470,473,498,513,516,519,536,540,697,700,703,706,720,724,727,741,744,747,778,781,801,804,835],[18,19,6],"h1",{"id":20},"ssl-证书与-https",[22,23,24],"p",{},"这页适合作为“自建站点 HTTPS 接入与续期手册”。真正要避免的不是申请证书本身，而是证书签到了、Nginx 配了、结果续期没跑通，几个月后网站突然掉证书。",[26,27,29],"h2",{"id":28},"lets-encrypt-certbot","Let's Encrypt + Certbot",[22,31,32,39,40,45],{},[33,34,38],"a",{"href":35,"rel":36},"https:\u002F\u002Fletsencrypt.org\u002F",[37],"nofollow","Let's Encrypt"," 提供免费 SSL 证书，",[33,41,44],{"href":42,"rel":43},"https:\u002F\u002Fcertbot.eff.org\u002F",[37],"Certbot"," 是官方推荐的自动化工具。",[26,47,48],{"id":48},"推荐接入顺序",[22,50,51],{},"建议按下面顺序完成：",[53,54,55,59,62,65,68],"ol",{},[56,57,58],"li",{},"先确认域名解析到正确服务器",[56,60,61],{},"再确认 80 \u002F 443 端口和 Nginx 配置基本正常",[56,63,64],{},"选择 HTTP 验证或 DNS 验证方案",[56,66,67],{},"签发成功后，立刻验证自动续期",[56,69,70],{},"最后再补 HSTS、OCSP、重定向等强化配置",[72,73,75],"h3",{"id":74},"安装-certbot","安装 Certbot",[77,78,83],"pre",{"className":79,"code":80,"language":81,"meta":82,"style":82},"language-bash shiki shiki-themes github-light github-dark","# Ubuntu\u002FDebian\napt install certbot python3-certbot-nginx -y\n","bash","",[84,85,86,95],"code",{"__ignoreMap":82},[87,88,91],"span",{"class":89,"line":90},"line",1,[87,92,94],{"class":93},"sJ8bj","# Ubuntu\u002FDebian\n",[87,96,98,102,106,109,112],{"class":89,"line":97},2,[87,99,101],{"class":100},"sScJk","apt",[87,103,105],{"class":104},"sZZnC"," install",[87,107,108],{"class":104}," certbot",[87,110,111],{"class":104}," python3-certbot-nginx",[87,113,115],{"class":114},"sj4cs"," -y\n",[72,117,119],{"id":118},"nginx-自动配置","Nginx 自动配置",[77,121,123],{"className":79,"code":122,"language":81,"meta":82,"style":82},"# 自动获取证书并配置 Nginx\ncertbot --nginx -d example.com -d www.example.com\n\n# 测试续期\ncertbot renew --dry-run\n",[84,124,125,130,149,156,162],{"__ignoreMap":82},[87,126,127],{"class":89,"line":90},[87,128,129],{"class":93},"# 自动获取证书并配置 Nginx\n",[87,131,132,135,138,141,144,146],{"class":89,"line":97},[87,133,134],{"class":100},"certbot",[87,136,137],{"class":114}," --nginx",[87,139,140],{"class":114}," -d",[87,142,143],{"class":104}," example.com",[87,145,140],{"class":114},[87,147,148],{"class":104}," www.example.com\n",[87,150,152],{"class":89,"line":151},3,[87,153,155],{"emptyLinePlaceholder":154},true,"\n",[87,157,159],{"class":89,"line":158},4,[87,160,161],{"class":93},"# 测试续期\n",[87,163,165,167,170],{"class":89,"line":164},5,[87,166,134],{"class":100},[87,168,169],{"class":104}," renew",[87,171,172],{"class":114}," --dry-run\n",[22,174,175],{},"Certbot 会自动修改 Nginx 配置并设置定时续期。",[72,177,179],{"id":178},"独立模式无-web-服务器","独立模式（无 Web 服务器）",[77,181,183],{"className":79,"code":182,"language":81,"meta":82,"style":82},"certbot certonly --standalone -d example.com\n",[84,184,185],{"__ignoreMap":82},[87,186,187,189,192,195,197],{"class":89,"line":90},[87,188,134],{"class":100},[87,190,191],{"class":104}," certonly",[87,193,194],{"class":114}," --standalone",[87,196,140],{"class":114},[87,198,199],{"class":104}," example.com\n",[72,201,203],{"id":202},"手动-dns-验证通配符证书","手动 DNS 验证（通配符证书）",[77,205,207],{"className":79,"code":206,"language":81,"meta":82,"style":82},"certbot certonly --manual --preferred-challenges dns -d \"*.example.com\" -d example.com\n",[84,208,209],{"__ignoreMap":82},[87,210,211,213,215,218,221,224,226,229,231],{"class":89,"line":90},[87,212,134],{"class":100},[87,214,191],{"class":104},[87,216,217],{"class":114}," --manual",[87,219,220],{"class":114}," --preferred-challenges",[87,222,223],{"class":104}," dns",[87,225,140],{"class":114},[87,227,228],{"class":104}," \"*.example.com\"",[87,230,140],{"class":114},[87,232,199],{"class":104},[22,234,235],{},"按提示添加 DNS TXT 记录后验证。",[26,237,239],{"id":238},"http-验证还是-dns-验证","HTTP 验证还是 DNS 验证",[22,241,242],{},"可以这样选：",[244,245,246,253],"ul",{},[56,247,248,252],{},[249,250,251],"strong",{},"HTTP 验证","：最适合普通单域名站点，配置简单",[56,254,255,258],{},[249,256,257],{},"DNS 验证","：适合通配符证书、内网服务、不能开放 80 端口的场景",[22,260,261],{},"如果你的 DNS 托管在 Cloudflare，优先考虑 DNS API 自动化，会比手工 TXT 记录轻松很多。",[26,263,265],{"id":264},"cloudflare-dns-验证自动化","Cloudflare DNS 验证（自动化）",[22,267,268],{},"适合使用 Cloudflare 管理 DNS 的场景，无需开放 80 端口。",[72,270,271],{"id":271},"安装插件",[77,273,275],{"className":79,"code":274,"language":81,"meta":82,"style":82},"apt install python3-certbot-dns-cloudflare -y\n",[84,276,277],{"__ignoreMap":82},[87,278,279,281,283,286],{"class":89,"line":90},[87,280,101],{"class":100},[87,282,105],{"class":104},[87,284,285],{"class":104}," python3-certbot-dns-cloudflare",[87,287,115],{"class":114},[72,289,291],{"id":290},"配置-api-token","配置 API Token",[22,293,294,295,298],{},"创建 ",[84,296,297],{},"\u002Fetc\u002Fletsencrypt\u002Fcloudflare.ini","：",[77,300,304],{"className":301,"code":302,"language":303,"meta":82,"style":82},"language-ini shiki shiki-themes github-light github-dark","dns_cloudflare_api_token = YOUR_CLOUDFLARE_API_TOKEN\n","ini",[84,305,306],{"__ignoreMap":82},[87,307,308,312],{"class":89,"line":90},[87,309,311],{"class":310},"szBVR","dns_cloudflare_api_token",[87,313,315],{"class":314},"sVt8B"," = YOUR_CLOUDFLARE_API_TOKEN\n",[77,317,319],{"className":79,"code":318,"language":81,"meta":82,"style":82},"chmod 600 \u002Fetc\u002Fletsencrypt\u002Fcloudflare.ini\n",[84,320,321],{"__ignoreMap":82},[87,322,323,326,329],{"class":89,"line":90},[87,324,325],{"class":100},"chmod",[87,327,328],{"class":114}," 600",[87,330,331],{"class":104}," \u002Fetc\u002Fletsencrypt\u002Fcloudflare.ini\n",[72,333,334],{"id":334},"申请证书",[77,336,338],{"className":79,"code":337,"language":81,"meta":82,"style":82},"certbot certonly \\\n  --dns-cloudflare \\\n  --dns-cloudflare-credentials \u002Fetc\u002Fletsencrypt\u002Fcloudflare.ini \\\n  -d example.com \\\n  -d \"*.example.com\"\n",[84,339,340,349,356,366,375],{"__ignoreMap":82},[87,341,342,344,346],{"class":89,"line":90},[87,343,134],{"class":100},[87,345,191],{"class":104},[87,347,348],{"class":114}," \\\n",[87,350,351,354],{"class":89,"line":97},[87,352,353],{"class":114},"  --dns-cloudflare",[87,355,348],{"class":114},[87,357,358,361,364],{"class":89,"line":151},[87,359,360],{"class":114},"  --dns-cloudflare-credentials",[87,362,363],{"class":104}," \u002Fetc\u002Fletsencrypt\u002Fcloudflare.ini",[87,365,348],{"class":114},[87,367,368,371,373],{"class":89,"line":158},[87,369,370],{"class":114},"  -d",[87,372,143],{"class":104},[87,374,348],{"class":114},[87,376,377,379],{"class":89,"line":164},[87,378,370],{"class":114},[87,380,381],{"class":104}," \"*.example.com\"\n",[26,383,384],{"id":384},"证书管理",[77,386,388],{"className":79,"code":387,"language":81,"meta":82,"style":82},"# 查看已安装证书\ncertbot certificates\n\n# 手动续期\ncertbot renew\n\n# 删除证书\ncertbot delete --cert-name example.com\n",[84,389,390,395,402,406,411,418,423,429],{"__ignoreMap":82},[87,391,392],{"class":89,"line":90},[87,393,394],{"class":93},"# 查看已安装证书\n",[87,396,397,399],{"class":89,"line":97},[87,398,134],{"class":100},[87,400,401],{"class":104}," certificates\n",[87,403,404],{"class":89,"line":151},[87,405,155],{"emptyLinePlaceholder":154},[87,407,408],{"class":89,"line":158},[87,409,410],{"class":93},"# 手动续期\n",[87,412,413,415],{"class":89,"line":164},[87,414,134],{"class":100},[87,416,417],{"class":104}," renew\n",[87,419,421],{"class":89,"line":420},6,[87,422,155],{"emptyLinePlaceholder":154},[87,424,426],{"class":89,"line":425},7,[87,427,428],{"class":93},"# 删除证书\n",[87,430,432,434,437,440],{"class":89,"line":431},8,[87,433,134],{"class":100},[87,435,436],{"class":104}," delete",[87,438,439],{"class":114}," --cert-name",[87,441,199],{"class":104},[26,443,444],{"id":444},"自动续期",[22,446,447],{},"Certbot 安装后会自动创建定时任务。验证：",[77,449,451],{"className":79,"code":450,"language":81,"meta":82,"style":82},"systemctl list-timers | grep certbot\n",[84,452,453],{"__ignoreMap":82},[87,454,455,458,461,464,467],{"class":89,"line":90},[87,456,457],{"class":100},"systemctl",[87,459,460],{"class":104}," list-timers",[87,462,463],{"class":310}," |",[87,465,466],{"class":100}," grep",[87,468,469],{"class":104}," certbot\n",[22,471,472],{},"手动添加续期后重载 Nginx：",[77,474,476],{"className":79,"code":475,"language":81,"meta":82,"style":82},"# \u002Fetc\u002Fletsencrypt\u002Frenewal-hooks\u002Fdeploy\u002Freload-nginx.sh\n#!\u002Fbin\u002Fbash\nsystemctl reload nginx\n",[84,477,478,483,488],{"__ignoreMap":82},[87,479,480],{"class":89,"line":90},[87,481,482],{"class":93},"# \u002Fetc\u002Fletsencrypt\u002Frenewal-hooks\u002Fdeploy\u002Freload-nginx.sh\n",[87,484,485],{"class":89,"line":97},[87,486,487],{"class":93},"#!\u002Fbin\u002Fbash\n",[87,489,490,492,495],{"class":89,"line":151},[87,491,457],{"class":100},[87,493,494],{"class":104}," reload",[87,496,497],{"class":104}," nginx\n",[77,499,501],{"className":79,"code":500,"language":81,"meta":82,"style":82},"chmod +x \u002Fetc\u002Fletsencrypt\u002Frenewal-hooks\u002Fdeploy\u002Freload-nginx.sh\n",[84,502,503],{"__ignoreMap":82},[87,504,505,507,510],{"class":89,"line":90},[87,506,325],{"class":100},[87,508,509],{"class":104}," +x",[87,511,512],{"class":104}," \u002Fetc\u002Fletsencrypt\u002Frenewal-hooks\u002Fdeploy\u002Freload-nginx.sh\n",[26,514,515],{"id":515},"续期检查清单",[22,517,518],{},"不要只看“今天签发成功了”，还要确认下面几件事：",[244,520,521,527,530,533],{},[56,522,523,526],{},[84,524,525],{},"certbot renew --dry-run"," 能通过",[56,528,529],{},"定时器或 cron 任务已存在",[56,531,532],{},"续期后会自动 reload Web 服务",[56,534,535],{},"证书路径、权限和站点配置都引用了正确文件",[26,537,539],{"id":538},"nginx-ssl-最佳配置","Nginx SSL 最佳配置",[77,541,545],{"className":542,"code":543,"language":544,"meta":82,"style":82},"language-nginx shiki shiki-themes github-light github-dark","server {\n    listen 443 ssl http2;\n    server_name example.com;\n\n    ssl_certificate \u002Fetc\u002Fletsencrypt\u002Flive\u002Fexample.com\u002Ffullchain.pem;\n    ssl_certificate_key \u002Fetc\u002Fletsencrypt\u002Flive\u002Fexample.com\u002Fprivkey.pem;\n\n    # 安全配置\n    ssl_protocols TLSv1.2 TLSv1.3;\n    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;\n    ssl_prefer_server_ciphers off;\n\n    # HSTS\n    add_header Strict-Transport-Security \"max-age=63072000\" always;\n\n    # OCSP Stapling\n    ssl_stapling on;\n    ssl_stapling_verify on;\n}\n","nginx",[84,546,547,555,566,574,578,586,594,598,603,612,621,633,638,644,659,664,670,681,691],{"__ignoreMap":82},[87,548,549,552],{"class":89,"line":90},[87,550,551],{"class":310},"server",[87,553,554],{"class":314}," {\n",[87,556,557,560,563],{"class":89,"line":97},[87,558,559],{"class":310},"    listen ",[87,561,562],{"class":114},"443",[87,564,565],{"class":314}," ssl http2;\n",[87,567,568,571],{"class":89,"line":151},[87,569,570],{"class":310},"    server_name ",[87,572,573],{"class":314},"example.com;\n",[87,575,576],{"class":89,"line":158},[87,577,155],{"emptyLinePlaceholder":154},[87,579,580,583],{"class":89,"line":164},[87,581,582],{"class":310},"    ssl_certificate ",[87,584,585],{"class":314},"\u002Fetc\u002Fletsencrypt\u002Flive\u002Fexample.com\u002Ffullchain.pem;\n",[87,587,588,591],{"class":89,"line":420},[87,589,590],{"class":310},"    ssl_certificate_key ",[87,592,593],{"class":314},"\u002Fetc\u002Fletsencrypt\u002Flive\u002Fexample.com\u002Fprivkey.pem;\n",[87,595,596],{"class":89,"line":425},[87,597,155],{"emptyLinePlaceholder":154},[87,599,600],{"class":89,"line":431},[87,601,602],{"class":93},"    # 安全配置\n",[87,604,606,609],{"class":89,"line":605},9,[87,607,608],{"class":310},"    ssl_protocols ",[87,610,611],{"class":314},"TLSv1.2 TLSv1.3;\n",[87,613,615,618],{"class":89,"line":614},10,[87,616,617],{"class":310},"    ssl_ciphers ",[87,619,620],{"class":314},"ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;\n",[87,622,624,627,630],{"class":89,"line":623},11,[87,625,626],{"class":310},"    ssl_prefer_server_ciphers ",[87,628,629],{"class":114},"off",[87,631,632],{"class":314},";\n",[87,634,636],{"class":89,"line":635},12,[87,637,155],{"emptyLinePlaceholder":154},[87,639,641],{"class":89,"line":640},13,[87,642,643],{"class":93},"    # HSTS\n",[87,645,647,650,653,656],{"class":89,"line":646},14,[87,648,649],{"class":310},"    add_header ",[87,651,652],{"class":314},"Strict-Transport-Security ",[87,654,655],{"class":104},"\"max-age=63072000\"",[87,657,658],{"class":314}," always;\n",[87,660,662],{"class":89,"line":661},15,[87,663,155],{"emptyLinePlaceholder":154},[87,665,667],{"class":89,"line":666},16,[87,668,669],{"class":93},"    # OCSP Stapling\n",[87,671,673,676,679],{"class":89,"line":672},17,[87,674,675],{"class":310},"    ssl_stapling ",[87,677,678],{"class":114},"on",[87,680,632],{"class":314},[87,682,684,687,689],{"class":89,"line":683},18,[87,685,686],{"class":310},"    ssl_stapling_verify ",[87,688,678],{"class":114},[87,690,632],{"class":314},[87,692,694],{"class":89,"line":693},19,[87,695,696],{"class":314},"}\n",[26,698,699],{"id":699},"常见问题",[72,701,702],{"id":702},"申请证书失败",[22,704,705],{},"优先检查：",[244,707,708,711,714,717],{},[56,709,710],{},"域名解析是否真的指向当前服务器",[56,712,713],{},"80 端口是否被占用或被防火墙拦住",[56,715,716],{},"Nginx 配置是否能正常加载",[56,718,719],{},"Cloudflare 是否开了代理，影响了验证方式",[72,721,723],{"id":722},"证书明明签到了但浏览器还是不安全","证书明明签到了，但浏览器还是不安全",[22,725,726],{},"通常要继续排查：",[244,728,729,732,735,738],{},[56,730,731],{},"网站是否还混用了 HTTP 资源",[56,733,734],{},"中间证书链是否完整",[56,736,737],{},"访问的是否还是旧域名或旧站点配置",[56,739,740],{},"反向代理层是否真正切到了新证书",[72,742,743],{"id":743},"自动续期没生效",[22,745,746],{},"这类问题最危险，因为平时看不出来。建议养成定期检查：",[77,748,750],{"className":79,"code":749,"language":81,"meta":82,"style":82},"certbot renew --dry-run\ncertbot certificates\nsystemctl list-timers | grep certbot\n",[84,751,752,760,766],{"__ignoreMap":82},[87,753,754,756,758],{"class":89,"line":90},[87,755,134],{"class":100},[87,757,169],{"class":104},[87,759,172],{"class":114},[87,761,762,764],{"class":89,"line":97},[87,763,134],{"class":100},[87,765,401],{"class":104},[87,767,768,770,772,774,776],{"class":89,"line":151},[87,769,457],{"class":100},[87,771,460],{"class":104},[87,773,463],{"class":310},[87,775,466],{"class":100},[87,777,469],{"class":104},[26,779,780],{"id":780},"延伸阅读",[244,782,783,789,795],{},[56,784,785],{},[33,786,788],{"href":787},"\u002Fdocs\u002Fnginx-basics","Nginx 基础配置",[56,790,791],{},[33,792,794],{"href":793},"\u002Fdocs\u002Fdns-hosts","DNS 与 Hosts 配置",[56,796,797],{},[33,798,800],{"href":799},"\u002Fdocs\u002Fmonitoring-logging","监控与日志",[26,802,803],{"id":803},"参考链接",[244,805,806,812,819,827],{},[56,807,808,811],{},[33,809,38],{"href":35,"rel":810},[37]," — 免费证书",[56,813,814,818],{},[33,815,817],{"href":42,"rel":816},[37],"Certbot 官网"," — 安装指南",[56,820,821,826],{},[33,822,825],{"href":823,"rel":824},"https:\u002F\u002Fwww.ssllabs.com\u002Fssltest\u002F",[37],"SSL Labs 测试"," — 检测 SSL 配置",[56,828,829,834],{},[33,830,833],{"href":831,"rel":832},"https:\u002F\u002Fssl-config.mozilla.org\u002F",[37],"Mozilla SSL 配置生成器"," — 最佳实践配置",[836,837,838],"style",{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}",{"title":82,"searchDepth":97,"depth":97,"links":840},[841,842,848,849,854,855,856,857,858,863,864],{"id":28,"depth":97,"text":29},{"id":48,"depth":97,"text":48,"children":843},[844,845,846,847],{"id":74,"depth":151,"text":75},{"id":118,"depth":151,"text":119},{"id":178,"depth":151,"text":179},{"id":202,"depth":151,"text":203},{"id":238,"depth":97,"text":239},{"id":264,"depth":97,"text":265,"children":850},[851,852,853],{"id":271,"depth":151,"text":271},{"id":290,"depth":151,"text":291},{"id":334,"depth":151,"text":334},{"id":384,"depth":97,"text":384},{"id":444,"depth":97,"text":444},{"id":515,"depth":97,"text":515},{"id":538,"depth":97,"text":539},{"id":699,"depth":97,"text":699,"children":859},[860,861,862],{"id":702,"depth":151,"text":702},{"id":722,"depth":151,"text":723},{"id":743,"depth":151,"text":743},{"id":780,"depth":97,"text":780},{"id":803,"depth":97,"text":803},{"path":866,"title":867,"description":868,"docType":8,"resourceKind":9,"categoryId":10,"categoryLabel":11,"updatedAt":12,"publishedAt":12,"icon":13},"\u002Fdocs\u002Fssh-config","SSH 配置与使用","SSH 密钥管理、多账号配置、端口转发与远程连接技巧",{"path":870,"title":871,"description":872,"docType":8,"resourceKind":9,"categoryId":10,"categoryLabel":11,"updatedAt":12,"publishedAt":12,"icon":13},"\u002Fdocs\u002Ftmux-screen","tmux 与 screen 终端复用","tmux 安装配置、会话管理、窗口分割、快捷键与常用配置",[874,875,876],"希望把零散经验整理成长期可复用工作流的人","想先建立认知，再决定是否深入实践的人","希望阅读时顺手建立自己的操作清单或收藏体系的人",[878,879,880],"先浏览标题、摘要和目录，带着问题阅读会更高效","顺手记录真正对你有用的命令、链接和注意事项，避免重复搜索","如果页面里提到相关文档，尽量一起打开对照，效果通常更完整",[882,887,891,893],{"path":883,"title":884,"description":885,"docType":8,"resourceKind":9,"categoryId":10,"categoryLabel":11,"updatedAt":886,"publishedAt":886,"icon":13},"\u002Fdocs\u002Fcloudflare-pages-deploy","Cloudflare Pages 部署指南","Cloudflare Pages 项目部署、自定义域名、环境变量、重定向与 Functions","2026-02-28",{"path":888,"title":889,"description":890,"docType":8,"resourceKind":9,"categoryId":10,"categoryLabel":11,"updatedAt":886,"publishedAt":886,"icon":13},"\u002Fdocs\u002Fs3-storage","S3 对象存储","S3 兼容存储使用、Cloudflare R2、MinIO 自建、rclone 同步与 SDK 集成",{"path":799,"title":800,"description":892,"docType":8,"resourceKind":9,"categoryId":10,"categoryLabel":11,"updatedAt":12,"publishedAt":12,"icon":13},"服务器监控工具、日志管理、Uptime 监控与告警配置",{"path":894,"title":895,"description":896,"docType":8,"resourceKind":9,"categoryId":10,"categoryLabel":11,"updatedAt":12,"publishedAt":12,"icon":13},"\u002Fdocs\u002Fcontainer-orchestration","容器编排入门","Docker Swarm 与 Kubernetes 基础概念、常用命令与本地开发环境",1776215712419]