[{"data":1,"prerenderedAt":2059},["ShallowReactive",2],{"content:\u002F2026\u002Fcloudflare-deploy-guide":3,"surround:\u002F2026\u002Fcloudflare-deploy-guide":2049},{"id":4,"title":5,"body":6,"categories":2025,"date":2027,"description":2028,"draft":2029,"extension":2030,"image":2031,"meta":2032,"navigation":2035,"path":2036,"permalink":2037,"published":2037,"readingTime":2038,"recommend":2037,"references":2037,"seo":2043,"sitemap":2044,"stem":2045,"tags":2046,"type":2047,"updated":2037,"__hash__":2048},"content\u002Fposts\u002F2026\u002Fcloudflare-deploy-guide.md","Cloudflare 部署全教程：从注册账号到网站上线",{"type":7,"value":8,"toc":1992},"minimark",[9,17,20,42,48,51,54,59,62,65,158,163,169,172,183,185,189,194,215,221,228,230,234,237,242,255,261,265,276,281,287,290,442,456,461,477,480,484,495,502,504,508,515,519,523,599,602,609,613,616,622,628,632,639,654,659,697,701,711,725,733,736,742,748,754,759,761,765,772,776,883,888,892,895,911,916,954,966,974,976,980,987,991,1004,1008,1043,1048,1113,1116,1122,1127,1243,1248,1253,1256,1259,1265,1270,1273,1280,1286,1289,1294,1305,1318,1322,1325,1329,1335,1344,1350,1353,1359,1370,1372,1376,1382,1386,1402,1407,1443,1446,1453,1458,1473,1475,1479,1485,1554,1563,1572,1575,1583,1586,1600,1602,1606,1612,1645,1650,1687,1689,1692,1695,1831,1833,1836,1842,1922,1928,1930,1933,1943,1946,1969,1972,1977,1979,1983,1986],[10,11,12,13],"p",{},"这篇教程只有一个目标：",[14,15,16],"strong",{},"带你从零把网站部署上线，全程不用买服务器。",[10,18,19],{},"我会按\"第 1 步、第 2 步\"这样的顺序一路写下去，每一步都告诉你三件事：",[21,22,23,30,36],"ol",{},[24,25,26,29],"li",{},[14,27,28],{},"点哪里","（界面上找什么）",[24,31,32,35],{},[14,33,34],{},"填什么","（具体填什么值）",[24,37,38,41],{},[14,39,40],{},"看到什么算成功","（怎么判断这步过了）",[10,43,44,45],{},"最后还会给一张故障速查表。",[14,46,47],{},"如果你卡在某一步，先去那张表里找症状。",[10,49,50],{},"预计耗时：域名 NS 生效要等一会儿，其余操作加起来 20 分钟以内。",[52,53],"hr",{},[55,56,58],"h2",{"id":57},"第-0-步先搞清楚-cloudflare-免费给你什么","第 0 步：先搞清楚 Cloudflare 免费给你什么",[10,60,61],{},"这一步不用操作，先看一眼它免费给的是什么，后面选方案心里有数。",[10,63,64],{},"Cloudflare 免费（Free 计划）提供的是这些：",[66,67,68,84],"table",{},[69,70,71],"thead",{},[72,73,74,78,81],"tr",{},[75,76,77],"th",{},"能力",[75,79,80],{},"免费额度",[75,82,83],{},"你拿它干什么",[85,86,87,99,110,121,136,147],"tbody",{},[72,88,89,93,96],{},[90,91,92],"td",{},"DNS 托管",[90,94,95],{},"1000 条记录",[90,97,98],{},"把域名解析交给它管",[72,100,101,104,107],{},[90,102,103],{},"SSL\u002FTLS 证书",[90,105,106],{},"自动签发 + 自动续期",[90,108,109],{},"全站 HTTPS",[72,111,112,115,118],{},[90,113,114],{},"CDN",[90,116,117],{},"无限带宽",[90,119,120],{},"全球节点缓存加速",[72,122,123,128,131],{},[90,124,125],{},[14,126,127],{},"Pages",[90,129,130],{},"每月 500 次构建、无限带宽、100 个自定义域名",[90,132,133],{},[14,134,135],{},"托管静态网站",[72,137,138,141,144],{},[90,139,140],{},"Workers",[90,142,143],{},"每天 10 万次请求",[90,145,146],{},"跑边缘函数",[72,148,149,152,155],{},[90,150,151],{},"R2 对象存储",[90,153,154],{},"10 GB",[90,156,157],{},"存文件",[10,159,160],{},[14,161,162],{},"注意最后没有\"域名\"这一项。",[10,164,165,166],{},"很多人以为 Cloudflare 送域名，不是的。",[14,167,168],{},"它免费给的是\"托管能力\"，域名本身得你自己有。",[10,170,171],{},"所以完整链路是这样的：",[173,174,179],"pre",{"className":175,"code":177,"language":178},[176],"language-text","你有一个域名\n     ↓ 改 NS\n托管到 Cloudflare（拿到 DNS + CDN + SSL）\n     ↓ 连 Git 仓库\n用 Pages 部署网站\n     ↓ 绑域名\n别人访问你的域名就能看到网站\n","text",[180,181,177],"code",{"__ignoreMap":182},"",[52,184],{},[55,186,188],{"id":187},"第-1-步注册-cloudflare-账号","第 1 步：注册 Cloudflare 账号",[10,190,191],{},[14,192,193],{},"操作：",[21,195,196,202,209,212],{},[24,197,198,199],{},"浏览器打开 ",[180,200,201],{"code":201},"dash.cloudflare.com",[24,203,204,205,208],{},"点 ",[14,206,207],{},"Sign Up","（注册）",[24,210,211],{},"填邮箱 + 密码",[24,213,214],{},"去邮箱收验证邮件，点里面的链接",[10,216,217,220],{},[14,218,219],{},"看到什么算成功："," 能进到控制台首页，左侧有一排菜单（Websites、Workers & Pages 等）。",[10,222,223,224,227],{},"免费计划",[14,225,226],{},"不需要信用卡","，注册完就能用。",[52,229],{},[55,231,233],{"id":232},"第-2-步准备一个域名","第 2 步：准备一个域名",[10,235,236],{},"这一步有三个方案，按你的情况挑一个。",[238,239,241],"h3",{"id":240},"方案-a买一个推荐","方案 A：买一个（推荐）",[10,243,244,247,248,247,251,254],{},[180,245,246],{"code":246},".xyz","、",[180,249,250],{"code":250},".top",[180,252,253],{"code":253},".icu"," 这类后缀，一年十几块钱。任何域名注册商都能买。",[10,256,257,260],{},[14,258,259],{},"为什么推荐买","：域名所有权在你手里，不会被收回，也不用担心服务商跑路。一年十几块换的是这份确定性。",[238,262,264],{"id":263},"方案-b用免费域名","方案 B：用免费域名",[10,266,267,268,271,272,275],{},"如果只是想练手、做测试，或者暂时不想花钱，可以先用免费域名。这类服务给你的是",[14,269,270],{},"别人域名下的一个二级域名","（形如 ",[180,273,274],{"code":274},"你的名字.xxx.org","），你拿到的是使用权，不是所有权。",[10,277,278],{},[14,279,280],{},"挑平台时，最重要的判断标准是：能不能改 NS 记录。",[10,282,283,284],{},"因为第 3 步要把域名托管到 Cloudflare（才能用上 CDN、免费 SSL、Pages）。",[14,285,286],{},"只有能自由修改 NS 的平台，域名才托管得进去。",[10,288,289],{},"按这个标准，目前（2026 年 9 月）还在运行的有这几个：",[66,291,292,311],{},[69,293,294],{},[72,295,296,299,302,305,308],{},[75,297,298],{},"平台",[75,300,301],{},"拿到的域名形态",[75,303,304],{},"能否改 NS 接入 Cloudflare",[75,306,307],{},"审核",[75,309,310],{},"说明",[85,312,313,337,361,384,415],{},[72,314,315,320,325,328,331],{},[90,316,317],{},[14,318,319],{},"EU.org",[90,321,322],{},[180,323,324],{"code":324},"xxx.eu.org",[90,326,327],{},"✅ 支持自定义 NS",[90,329,330],{},"人工审核，约 3～7 个工作日",[90,332,333,334],{},"1996 年运营至今的非营利组织，永久免费、不用续费。",[14,335,336],{},"最稳，但要耐心等审核",[72,338,339,344,349,352,355],{},[90,340,341],{},[14,342,343],{},"DigitalPlat",[90,345,346],{},[180,347,348],{"code":348},"xxx.dpdns.org",[90,350,351],{},"✅ 支持",[90,353,354],{},"基本即时",[90,356,357,358],{},"注册即可用，支持自动续期。",[14,359,360],{},"上手最快",[72,362,363,368,373,375,378],{},[90,364,365],{},[14,366,367],{},"register.us.kg",[90,369,370],{},[180,371,372],{"code":372},"xxx.us.kg",[90,374,351],{},[90,376,377],{},"需提交 KYC 材料",[90,379,380,381],{},"支持 Unicode 前缀，能注册带表情符号的域名。",[14,382,383],{},"要上传身份信息，介意就跳过",[72,385,386,391,404,406,408],{},[90,387,388],{},[14,389,390],{},"DNSHe",[90,392,393,396,397,396,400,403],{},[180,394,395],{"code":395},".ml"," \u002F ",[180,398,399],{"code":399},".ga",[180,401,402],{"code":402},".us.ci"," 等一级域名",[90,405,351],{},[90,407,354],{},[90,409,410,411,414],{},"免费账户最多持有 3 个。给的是",[14,412,413],{},"一级域名","而非二级，比较少见",[72,416,417,422,427,433,436],{},[90,418,419],{},[14,420,421],{},"ClouDNS Free Zone",[90,423,424],{},[180,425,426],{"code":426},"xxx.abrdns.com",[90,428,429,430],{},"❌ ",[14,431,432],{},"不支持",[90,434,435],{},"无需审核，秒级生效",[90,437,438,439],{},"它的免费套餐本质是「免费 DNS 托管」，域名和 DNS 都归它管，",[14,440,441],{},"接不进 Cloudflare",[443,444,445],"blockquote",{},[10,446,447,448,451,452,455],{},"⚠️ ",[14,449,450],{},"时效性提醒","：免费域名平台的生命周期普遍不长——有的会停止受理新注册，有的会突然改政策。上表是 2026 年 9 月的状态，",[14,453,454],{},"用之前自己去官网确认一遍","。另外建议用 163 或 Gmail 注册，部分平台会拦截 QQ 邮箱。",[10,457,458],{},[14,459,460],{},"免费域名的通病：",[462,463,464,471,474],"ul",{},[24,465,466,467,470],{},"域名",[14,468,469],{},"所有权不在你手里","，服务商随时可能收回或跑路",[24,472,473],{},"部分免费后缀被滥用得厉害，有些平台会直接拉黑",[24,475,476],{},"域名一旦没了，你上面所有配置全废",[10,478,479],{},"拿到域名之后，回到第 3 步把 NS 改成 Cloudflare 的，后面的流程完全一样。",[238,481,483],{"id":482},"方案-c干脆不要域名","方案 C：干脆不要域名",[10,485,486,487,490,491,494],{},"Cloudflare Pages 部署完本身就送一个 ",[180,488,489],{"code":489},"项目名.pages.dev"," 的地址，能直接访问、自带 HTTPS。",[14,492,493],{},"纯粹自己看、做测试的话，这个地址完全够用","——可以跳过第 3 步，直接做第 5 步。",[10,496,497,498,501],{},"缺点是地址不好记、不好看，而且国内部分网络环境访问 ",[180,499,500],{"code":500},"pages.dev"," 不稳定。这也是建议绑自己域名的原因。",[52,503],{},[55,505,507],{"id":506},"第-3-步把域名接进-cloudflare","第 3 步：把域名接进 Cloudflare",[10,509,510,511,514],{},"这一步是整个流程里",[14,512,513],{},"最容易卡住的","。",[238,516,518],{"id":517},"_31-添加站点","3.1 添加站点",[10,520,521],{},[14,522,193],{},[21,524,525,535,586,593],{},[24,526,527,528,531,532],{},"登录 Cloudflare，左侧菜单找 ",[14,529,530],{},"Websites","，或者首页上的 ",[14,533,534],{},"Add a site",[24,536,537,538,541,542],{},"输入你的域名——",[14,539,540],{},"只填域名本身","：",[66,543,544,554],{},[69,545,546],{},[72,547,548,551],{},[75,549,550],{},"正确",[75,552,553],{},"错误",[85,555,556,568,577],{},[72,557,558,563],{},[90,559,560],{},[180,561,562],{"code":562},"example.com",[90,564,565],{},[180,566,567],{"code":567},"https:\u002F\u002Fexample.com",[72,569,570,572],{},[90,571],{},[90,573,574],{},[180,575,576],{"code":576},"www.example.com",[72,578,579,581],{},[90,580],{},[90,582,583],{},[180,584,585],{"code":585},"example.com\u002Fblog",[24,587,588,589,592],{},"选择套餐，选 ",[14,590,591],{},"Free","（0 元那个）",[24,594,595,596],{},"它会自动扫描你域名现有的 DNS 记录，等扫描完点 ",[14,597,598],{},"Continue",[10,600,601],{},"界面大概长这样：",[10,603,604],{},[605,606],"img",{"alt":607,"src":608},"Cloudflare 添加站点界面：输入域名、选择 Free 计划","\u002Fcf-02-add-site.png",[238,610,612],{"id":611},"_32-记下-cloudflare-给你的两个-ns","3.2 记下 Cloudflare 给你的两个 NS",[10,614,615],{},"扫描完之后，页面上会给你两个 nameserver 地址，长这样：",[173,617,620],{"className":618,"code":619,"language":178},[176],"alex.ns.cloudflare.com\nbella.ns.cloudflare.com\n",[180,621,619],{"__ignoreMap":182},[10,623,624,627],{},[14,625,626],{},"每个账号拿到的都不一样，以你屏幕上看到的为准。"," 复制下来，下一步要用。",[238,629,631],{"id":630},"_33-去域名注册商改-ns","3.3 去域名注册商改 NS",[10,633,634,635,638],{},"打开你",[14,636,637],{},"买域名 \u002F 申请域名","的那个网站后台，找到\"DNS 管理\"或\"名称服务器 \u002F Nameservers\"设置：",[21,640,641,648,651],{},[24,642,643,644,647],{},"把",[14,645,646],{},"原来","的 NS 记录全部删掉",[24,649,650],{},"填入 Cloudflare 给你的那两个",[24,652,653],{},"保存",[10,655,656],{},[14,657,658],{},"这一步的常见问题：",[66,660,661,671],{},[69,662,663],{},[72,664,665,668],{},[75,666,667],{},"问题",[75,669,670],{},"怎么办",[85,672,673,681,689],{},[72,674,675,678],{},[90,676,677],{},"注册商锁了域名",[90,679,680],{},"先去\"域名安全\"里关闭\"域名锁定 \u002F 转移锁\"",[72,682,683,686],{},[90,684,685],{},"不让直接编辑 NS",[90,687,688],{},"有些注册商要求先切到\"自定义 DNS\"模式",[72,690,691,694],{},[90,692,693],{},"找不到 NS 设置在哪",[90,695,696],{},"搜\"注册商名字 + 修改 nameserver\"，各家后台位置差别很大",[238,698,700],{"id":699},"_34-怎么确认这步成功了","3.4 怎么确认这步成功了",[10,702,703,704,707,708,514],{},"回到 Cloudflare 首页，你那个域名的状态会从 ",[14,705,706],{},"Pending"," 变成 ",[14,709,710],{},"Active",[462,712,713,719],{},[24,714,715,718],{},[14,716,717],{},"生效时间","：几分钟到 24 小时，通常 10 分钟内",[24,720,721,724],{},[14,722,723],{},"超过 24 小时还是 Pending"," → 自己查一下 NS 到底改没改：",[173,726,731],{"className":727,"code":729,"language":730,"meta":182},[728],"language-bash","nslookup -type=ns example.com\n","bash",[180,732,729],{"__ignoreMap":182},[10,734,735],{},"看返回的 nameserver 是不是 Cloudflare 给你的那两个。改成功的输出长这样：",[10,737,738],{},[605,739],{"alt":740,"src":741},"nslookup 返回 Cloudflare 的 nameserver，说明 NS 已生效","\u002Fcf-01-ns-check.png",[10,743,744,747],{},[14,745,746],{},"如果还是原来的"," → 说明注册商那边根本没保存成功，回去重做 3.3。",[10,749,750,753],{},[14,751,752],{},"如果已经是那两个，但状态还是 Pending"," → 只是还没同步，再等等。",[443,755,756],{},[10,757,758],{},"本地 DNS 和浏览器都有缓存，换个网络环境或者等一会儿再试。",[52,760],{},[55,762,764],{"id":763},"第-4-步配置-dns-解析","第 4 步：配置 DNS 解析",[10,766,767,768,771],{},"域名托管成功后，就可以加解析记录了。在 ",[14,769,770],{},"DNS → Records"," 里操作。",[238,773,775],{"id":774},"_41-常见记录类型","4.1 常见记录类型",[66,777,778,794],{},[69,779,780],{},[72,781,782,785,788,791],{},[75,783,784],{},"类型",[75,786,787],{},"名称（Name）",[75,789,790],{},"内容（Content）",[75,792,793],{},"用途",[85,795,796,814,833,850,866],{},[72,797,798,801,806,811],{},[90,799,800],{},"A",[90,802,803],{},[180,804,805],{"code":805},"@",[90,807,808],{},[180,809,810],{"code":810},"1.2.3.4",[90,812,813],{},"根域名指向一个 IP",[72,815,816,818,823,827],{},[90,817,800],{},[90,819,820],{},[180,821,822],{"code":822},"blog",[90,824,825],{},[180,826,810],{"code":810},[90,828,829,832],{},[180,830,831],{"code":831},"blog.example.com"," 指向某个 IP",[72,834,835,838,843,847],{},[90,836,837],{},"CNAME",[90,839,840],{},[180,841,842],{"code":842},"www",[90,844,845],{},[180,846,562],{"code":562},[90,848,849],{},"别名，跟着目标走",[72,851,852,854,859,863],{},[90,853,837],{},[90,855,856],{},[180,857,858],{"code":858},"docs",[90,860,861],{},[180,862,489],{"code":489},[90,864,865],{},"指向 Cloudflare Pages",[72,867,868,871,875,880],{},[90,869,870],{},"TXT",[90,872,873],{},[180,874,805],{"code":805},[90,876,877],{},[180,878,879],{"code":879},"v=spf1 ...",[90,881,882],{},"邮箱验证、域名所有权验证",[10,884,885,887],{},[180,886,805],{"code":805}," 代表根域名本身。",[238,889,891],{"id":890},"_42-橙云还是灰云","4.2 橙云还是灰云",[10,893,894],{},"加记录时右边有个云朵图标，可以点击切换，这是 Cloudflare 的特色：",[462,896,897,904],{},[24,898,899,900,903],{},"🟠 ",[14,901,902],{},"橙色（Proxied，已代理）","：流量先经过 Cloudflare，享受 CDN 加速、隐藏源站真实 IP、免费 SSL",[24,905,906,907,910],{},"⚪ ",[14,908,909],{},"灰色（DNS only，仅 DNS）","：只做解析，流量直接连源站，Cloudflare 不插手",[10,912,913],{},[14,914,915],{},"怎么选：",[66,917,918,928],{},[69,919,920],{},[72,921,922,925],{},[75,923,924],{},"场景",[75,926,927],{},"选哪个",[85,929,930,938,946],{},[72,931,932,935],{},[90,933,934],{},"普通网站",[90,936,937],{},"🟠 橙云",[72,939,940,943],{},[90,941,942],{},"第三方服务要验证域名归属（如 Vercel 校验 CNAME）",[90,944,945],{},"⚪ 先灰云，验证过了再改回橙云",[72,947,948,951],{},[90,949,950],{},"需要对外暴露真实 IP",[90,952,953],{},"⚪ 灰云",[443,955,956],{},[10,957,958,961,962,965],{},[14,959,960],{},"一个常见困惑","：开了橙云之后，",[180,963,964],{"code":964},"ping"," 你的域名返回的是 Cloudflare 的 IP，不是你自己服务器的 IP。这是正常的代理行为。",[443,967,968],{},[10,969,970,973],{},[14,971,972],{},"这一步如果你用 Pages 部署","：可以暂时跳过。第 6 步绑自定义域名时，Cloudflare 会自动帮你加好记录。",[52,975],{},[55,977,979],{"id":978},"第-5-步用-pages-部署静态站点","第 5 步：用 Pages 部署静态站点",[10,981,982,983,986],{},"到主角了。Pages 有",[14,984,985],{},"两种部署方式","，先讲推荐的。",[238,988,990],{"id":989},"_51-方式一连接-git-仓库推荐","5.1 方式一：连接 Git 仓库（推荐）",[10,992,993,996,997],{},[14,994,995],{},"原理","：你把代码推到 GitHub，Cloudflare 监听这个仓库，每次有推送就自动拉代码、跑构建、发上线。",[14,998,999,1000,1003],{},"你只管 ",[180,1001,1002],{"code":1002},"git push","，剩下的它做。",[10,1005,1006],{},[14,1007,193],{},[21,1009,1010,1020,1029,1032,1035,1038],{},[24,1011,1012,1013,1016,1017],{},"进入 ",[14,1014,1015],{},"Workers & Pages"," → ",[14,1018,1019],{},"Create application",[24,1021,1022,1023,1025,1026],{},"切到 ",[14,1024,127],{}," 标签 → ",[14,1027,1028],{},"Connect to Git",[24,1030,1031],{},"授权 Cloudflare 访问你的 GitHub 账号（第一次会跳到授权页）",[24,1033,1034],{},"选择要部署的仓库",[24,1036,1037],{},"配置构建参数（见下表）",[24,1039,204,1040],{},[14,1041,1042],{},"Save and Deploy",[10,1044,1045],{},[14,1046,1047],{},"构建参数怎么填：",[66,1049,1050,1059],{},[69,1051,1052],{},[72,1053,1054,1057],{},[75,1055,1056],{},"字段",[75,1058,34],{},[85,1060,1061,1071,1082,1094,1102],{},[72,1062,1063,1066],{},[90,1064,1065],{},"Project name",[90,1067,1068,1069],{},"项目名，会决定默认域名 ",[180,1070,489],{"code":489},[72,1072,1073,1076],{},[90,1074,1075],{},"Production branch",[90,1077,1078,1079],{},"生产分支，一般是 ",[180,1080,1081],{"code":1081},"main",[72,1083,1084,1087],{},[90,1085,1086],{},"Framework preset",[90,1088,1089,1090,1093],{},"框架预设，选对会自动填下面两项；不确定就选 ",[180,1091,1092],{"code":1092},"None"," 手动填",[72,1095,1096,1099],{},[90,1097,1098],{},"Build command",[90,1100,1101],{},"构建命令",[72,1103,1104,1107],{},[90,1105,1106],{},"Build output directory",[90,1108,1109,1112],{},[14,1110,1111],{},"构建产物目录","（最容易填错的一项）",[10,1114,1115],{},"表单大概长这样（这里以 Nuxt 项目为例）：",[10,1117,1118],{},[605,1119],{"alt":1120,"src":1121},"Pages 构建参数表单：构建命令、输出目录、环境变量","\u002Fcf-03-build-config.png",[10,1123,1124],{},[14,1125,1126],{},"常见框架对照表：",[66,1128,1129,1140],{},[69,1130,1131],{},[72,1132,1133,1136,1138],{},[75,1134,1135],{},"框架",[75,1137,1098],{},[75,1139,1106],{},[85,1141,1142,1157,1171,1185,1198,1213,1227],{},[72,1143,1144,1147,1152],{},[90,1145,1146],{},"Nuxt",[90,1148,1149],{},[180,1150,1151],{"code":1151},"npm run generate",[90,1153,1154],{},[180,1155,1156],{"code":1156},"dist",[72,1158,1159,1162,1167],{},[90,1160,1161],{},"Vite \u002F Vue \u002F React",[90,1163,1164],{},[180,1165,1166],{"code":1166},"npm run build",[90,1168,1169],{},[180,1170,1156],{"code":1156},[72,1172,1173,1176,1180],{},[90,1174,1175],{},"Next.js（静态导出）",[90,1177,1178],{},[180,1179,1166],{"code":1166},[90,1181,1182],{},[180,1183,1184],{"code":1184},"out",[72,1186,1187,1190,1194],{},[90,1188,1189],{},"Astro",[90,1191,1192],{},[180,1193,1166],{"code":1166},[90,1195,1196],{},[180,1197,1156],{"code":1156},[72,1199,1200,1203,1208],{},[90,1201,1202],{},"Hugo",[90,1204,1205],{},[180,1206,1207],{"code":1207},"hugo",[90,1209,1210],{},[180,1211,1212],{"code":1212},"public",[72,1214,1215,1218,1223],{},[90,1216,1217],{},"Hexo",[90,1219,1220],{},[180,1221,1222],{"code":1222},"hexo generate",[90,1224,1225],{},[180,1226,1212],{"code":1212},[72,1228,1229,1232,1237],{},[90,1230,1231],{},"纯 HTML \u002F CSS \u002F JS",[90,1233,1234],{},[14,1235,1236],{},"留空",[90,1238,1239,1242],{},[180,1240,1241],{"code":1241},"\u002F"," 或你的目录名",[10,1244,1245],{},[14,1246,1247],{},"三个最容易翻车的地方：",[10,1249,1250],{},[14,1251,1252],{},"① 输出目录填错",[10,1254,1255],{},"症状：构建日志显示成功，但访问站点 404。",[10,1257,1258],{},"原因就是产物根本不在你填的那个目录里。",[10,1260,1261,1264],{},[14,1262,1263],{},"正确做法","：先在本地跑一次构建命令，看产物到底生成在哪个文件夹，再回来填。",[10,1266,1267],{},[14,1268,1269],{},"② Node 版本不匹配",[10,1271,1272],{},"症状：构建报语法错误，或者依赖装不上。",[10,1274,1275,1276,1279],{},"解决：在 ",[14,1277,1278],{},"Settings → Environment variables"," 里加一个环境变量：",[173,1281,1284],{"className":1282,"code":1283,"language":178},[176],"NODE_VERSION = 20\n",[180,1285,1283],{"__ignoreMap":182},[10,1287,1288],{},"（填你项目需要的版本，18 \u002F 20 \u002F 22 都行）",[10,1290,1291],{},[14,1292,1293],{},"③ 包管理器搞混",[10,1295,1296,1297,1300,1301,1304],{},"仓库里有 ",[180,1298,1299],{"code":1299},"pnpm-lock.yaml","，用 ",[180,1302,1303],{"code":1303},"npm install"," 会装出另一套依赖树。",[10,1306,1307,1308,1311,1312,1314,1315,514],{},"Cloudflare 会根据 lock 文件自动判断用哪个包管理器。同时存在多个 lock 文件（比如既有 ",[180,1309,1310],{"code":1310},"package-lock.json"," 又有 ",[180,1313,1299],{"code":1299},"）时，它可能判断错——",[14,1316,1317],{},"留一个就够",[238,1319,1321],{"id":1320},"_52-方式二wrangler-cli-直传","5.2 方式二：Wrangler CLI 直传",[10,1323,1324],{},"不想连 Git，或者想在本地构建好再传？用官方命令行工具。",[10,1326,1327],{},[14,1328,193],{},[173,1330,1333],{"className":1331,"code":1332,"language":730,"meta":182},[728],"# 第 1 步：安装\nnpm install -g wrangler\n\n# 第 2 步：登录（会弹出浏览器授权）\nwrangler login\n\n# 第 3 步：确认登录的是哪个账号\nwrangler whoami\n\n# 第 4 步：部署\nwrangler pages deploy .\u002Fdist --project-name=my-site\n",[180,1334,1332],{"__ignoreMap":182},[10,1336,1337,1339,1340,1343],{},[14,1338,40],{},"：命令最后会输出一个 ",[180,1341,1342],{"code":1342},"xxx.pages.dev"," 的地址。完整输出类似：",[10,1345,1346],{},[605,1347],{"alt":1348,"src":1349},"wrangler pages deploy 部署成功后的输出","\u002Fcf-04-deploy-success.png",[10,1351,1352],{},"其他常用命令：",[173,1354,1357],{"className":1355,"code":1356,"language":730,"meta":182},[728],"# 看所有项目\nwrangler pages project list\n\n# 看部署历史\nwrangler pages deployment list --project-name=my-site\n\n# 回滚到某次部署\nwrangler pages deployment rollback \u003C部署ID> --project-name=my-site\n",[180,1358,1356],{"__ignoreMap":182},[443,1360,1361],{},[10,1362,1363,541,1366,1369],{},[14,1364,1365],{},"注意",[180,1367,1368],{"code":1368},"--project-name"," 指定的项目如果不存在，命令会提示你先创建。",[52,1371],{},[55,1373,1375],{"id":1374},"第-6-步绑定自定义域名","第 6 步：绑定自定义域名",[10,1377,1378,1379,1381],{},"部署完，Cloudflare 会给你一个 ",[180,1380,489],{"code":489}," 的地址。能访问，但不好看。绑自己的域名：",[10,1383,1384],{},[14,1385,193],{},[21,1387,1388,1391,1399],{},[24,1389,1390],{},"进入你的 Pages 项目",[24,1392,204,1393,1016,1396],{},[14,1394,1395],{},"Custom domains",[14,1397,1398],{},"Set up a custom domain",[24,1400,1401],{},"输入你的域名 → 确认",[10,1403,1404],{},[14,1405,1406],{},"接下来会发生什么，取决于域名在哪：",[66,1408,1409,1419],{},[69,1410,1411],{},[72,1412,1413,1416],{},[75,1414,1415],{},"情况",[75,1417,1418],{},"你需要做什么",[85,1420,1421,1431],{},[72,1422,1423,1428],{},[90,1424,466,1425],{},[14,1426,1427],{},"就在同一个 Cloudflare 账号下",[90,1429,1430],{},"什么都不用做，它自动帮你加好 DNS 记录",[72,1432,1433,1438],{},[90,1434,466,1435],{},[14,1436,1437],{},"在别处",[90,1439,1440,1441],{},"它会提示你手动加一条 CNAME，指向 ",[180,1442,489],{"code":489},[10,1444,1445],{},"然后等证书签发，通常几分钟。",[10,1447,1448,1450,1451,514],{},[14,1449,40],{},"：域名状态变成 ",[14,1452,710],{},[10,1454,1455],{},[14,1456,1457],{},"如果一直卡在\"正在验证\"：",[462,1459,1460,1467,1470],{},[24,1461,1462,1463,1466],{},"检查 DNS 记录是不是真的加上了（",[180,1464,1465],{"code":1465},"nslookup 你的域名","）",[24,1468,1469],{},"检查 CNAME 的目标地址有没有写错",[24,1471,1472],{},"如果开了橙云而源站是第三方 → 先切成灰云试试",[52,1474],{},[55,1476,1478],{"id":1477},"第-7-步检查-ssltls-设置","第 7 步：检查 SSL\u002FTLS 设置",[10,1480,1481,1484],{},[14,1482,1483],{},"SSL\u002FTLS → Overview → Encryption mode","，有四种模式：",[66,1486,1487,1500],{},[69,1488,1489],{},[72,1490,1491,1494,1497],{},[75,1492,1493],{},"模式",[75,1495,1496],{},"含义",[75,1498,1499],{},"什么时候用",[85,1501,1502,1513,1527,1538],{},[72,1503,1504,1507,1510],{},[90,1505,1506],{},"Off",[90,1508,1509],{},"不加密",[90,1511,1512],{},"没有使用场景",[72,1514,1515,1518,1524],{},[90,1516,1517],{},"Flexible",[90,1519,1520,1521],{},"浏览器到 CF 加密，",[14,1522,1523],{},"但 CF 到源站是明文 HTTP",[90,1525,1526],{},"❌ 不推荐",[72,1528,1529,1532,1535],{},[90,1530,1531],{},"Full",[90,1533,1534],{},"CF 到源站加密，但不验证证书",[90,1536,1537],{},"源站只有自签证书时",[72,1539,1540,1545,1548],{},[90,1541,1542],{},[14,1543,1544],{},"Full (strict)",[90,1546,1547],{},"CF 到源站加密 + 验证证书",[90,1549,1550,1551],{},"✅ ",[14,1552,1553],{},"推荐",[10,1555,1556,541,1559,1562],{},[14,1557,1558],{},"如果你用 Pages 托管",[14,1560,1561],{},"不用管这个设置","。Pages 的内容直接由 Cloudflare 提供，没有独立源站。",[10,1564,1565,1568,1569,514],{},[14,1566,1567],{},"如果你有独立源站","：配错最典型的症状是浏览器报 ",[14,1570,1571],{},"\"重定向次数过多\"（ERR_TOO_MANY_REDIRECTS）",[10,1573,1574],{},"原因：CF 用 HTTP 去连源站，源站强制跳转到 HTTPS，CF 收到 301 后又用 HTTP 再试……死循环。",[10,1576,1577,1580,1581,514],{},[14,1578,1579],{},"解决","：把模式改成 ",[14,1582,1544],{},[10,1584,1585],{},"另外建议顺手开两个开关：",[462,1587,1588,1594],{},[24,1589,1590,1593],{},[14,1591,1592],{},"SSL\u002FTLS → Edge Certificates → Always Use HTTPS","：把 HTTP 请求自动跳转到 HTTPS",[24,1595,1596,1599],{},[14,1597,1598],{},"Automatic HTTPS Rewrites","：自动把页面里的 http 资源替换成 https，避免\"混合内容\"警告",[52,1601],{},[55,1603,1605],{"id":1604},"第-8-步验证部署真的成功了","第 8 步：验证部署真的成功了",[10,1607,1608,1609,541],{},"三个地方看，",[14,1610,1611],{},"按这个顺序",[21,1613,1614,1631,1639],{},[24,1615,1616,1619,1620,1623,1624,1627,1630],{},[14,1617,1618],{},"构建日志","：项目 → ",[14,1621,1622],{},"Deployments","，每次部署都有一条记录，点进去看日志",[1625,1626],"br",{},[14,1628,1629],{},"绿勾 = 成功，红叉 = 失败","，失败会明确告诉你在哪一步挂掉",[24,1632,1633,1636,1637],{},[14,1634,1635],{},"默认域名","：直接访问 ",[180,1638,489],{"code":489},[24,1640,1641,1644],{},[14,1642,1643],{},"自定义域名","：访问你自己的域名",[10,1646,1647],{},[14,1648,1649],{},"按这个顺序判断，能直接定位到问题在哪一层：",[66,1651,1652,1662],{},[69,1653,1654],{},[72,1655,1656,1659],{},[75,1657,1658],{},"现象",[75,1660,1661],{},"说明问题在哪",[85,1663,1664,1676],{},[72,1665,1666,1669],{},[90,1667,1668],{},"默认域名通了、自己的域名不通",[90,1670,1671,1672,1675],{},"构建和部署没问题，",[14,1673,1674],{},"问题在域名绑定","（回去看第 6 步）",[72,1677,1678,1681],{},[90,1679,1680],{},"默认域名也不通",[90,1682,1683,1686],{},[14,1684,1685],{},"问题在构建产物","（回去看 5.1 的三个坑）",[52,1688],{},[55,1690,1691],{"id":1691},"故障速查表",[10,1693,1694],{},"卡住了先来这里找症状：",[66,1696,1697,1709],{},[69,1698,1699],{},[72,1700,1701,1703,1706],{},[75,1702,1658],{},[75,1704,1705],{},"最可能的原因",[75,1707,1708],{},"怎么解决",[85,1710,1711,1725,1736,1747,1758,1772,1783,1794,1805,1818],{},[72,1712,1713,1716,1719],{},[90,1714,1715],{},"构建失败",[90,1717,1718],{},"Node 版本不对",[90,1720,1721,1722],{},"加环境变量 ",[180,1723,1724],{"code":1724},"NODE_VERSION",[72,1726,1727,1730,1733],{},[90,1728,1729],{},"构建成功但 404",[90,1731,1732],{},"输出目录填错",[90,1734,1735],{},"本地跑一次构建，确认产物路径",[72,1737,1738,1741,1744],{},[90,1739,1740],{},"页面样式全丢",[90,1742,1743],{},"资源根路径不对",[90,1745,1746],{},"检查框架的 base \u002F root 配置",[72,1748,1749,1752,1755],{},[90,1750,1751],{},"重定向次数过多",[90,1753,1754],{},"SSL 模式是 Flexible",[90,1756,1757],{},"改成 Full (strict)",[72,1759,1760,1763,1766],{},[90,1761,1762],{},"域名完全打不开",[90,1764,1765],{},"NS 没生效",[90,1767,1768,1771],{},[180,1769,1770],{"code":1770},"nslookup -type=ns 域名"," 检查",[72,1773,1774,1777,1780],{},[90,1775,1776],{},"域名一直 Pending",[90,1778,1779],{},"注册商没保存成功",[90,1781,1782],{},"回去重做第 3.3 步",[72,1784,1785,1788,1791],{},[90,1786,1787],{},"证书一直签发中",[90,1789,1790],{},"DNS 记录缺失",[90,1792,1793],{},"检查 CNAME \u002F A 记录",[72,1795,1796,1799,1802],{},[90,1797,1798],{},"部署成功但内容没更新",[90,1800,1801],{},"浏览器缓存",[90,1803,1804],{},"强制刷新（Ctrl + Shift + R）",[72,1806,1807,1812,1815],{},[90,1808,1809,1811],{},[180,1810,1002],{"code":1002}," 后没触发构建",[90,1813,1814],{},"分支设置不对",[90,1816,1817],{},"检查 Production branch",[72,1819,1820,1825,1828],{},[90,1821,1822,1824],{},[180,1823,500],{"code":500}," 打不开",[90,1826,1827],{},"网络环境问题",[90,1829,1830],{},"绑自己的域名（第 6 步）",[52,1832],{},[55,1834,1835],{"id":1835},"免费额度够用吗",[10,1837,1838,1839,541],{},"对个人站点，",[14,1840,1841],{},"完全够用",[66,1843,1844,1855],{},[69,1845,1846],{},[72,1847,1848,1851,1853],{},[75,1849,1850],{},"项目",[75,1852,80],{},[75,1854,310],{},[85,1856,1857,1868,1879,1890,1901,1912],{},[72,1858,1859,1862,1865],{},[90,1860,1861],{},"Pages 构建",[90,1863,1864],{},"每月 500 次",[90,1866,1867],{},"得每天推 16 次才能用完",[72,1869,1870,1873,1876],{},[90,1871,1872],{},"Pages 带宽",[90,1874,1875],{},"无限",[90,1877,1878],{},"不限制流量",[72,1880,1881,1884,1887],{},[90,1882,1883],{},"Pages 自定义域名",[90,1885,1886],{},"100 个",[90,1888,1889],{},"一个站点绑一个就够",[72,1891,1892,1895,1898],{},[90,1893,1894],{},"Workers 请求",[90,1896,1897],{},"每天 10 万次",[90,1899,1900],{},"接口转发、定时任务这类用途要算量",[72,1902,1903,1906,1909],{},[90,1904,1905],{},"DNS 记录",[90,1907,1908],{},"1000 条",[90,1910,1911],{},"用不完",[72,1913,1914,1917,1919],{},[90,1915,1916],{},"R2 存储",[90,1918,154],{},[90,1920,1921],{},"对象存储",[10,1923,1924,1927],{},[14,1925,1926],{},"需要算量的是 Workers","——做接口转发、定时任务这类持续调用的用途，10 万次\u002F天消耗得比想象中快。Pages 的静态托管没有流量限制。",[52,1929],{},[55,1931,1932],{"id":1932},"结语",[10,1934,1935,1936,1939,1940,1942],{},"走完这 8 步，你得到的是一个",[14,1937,1938],{},"能自动部署的静态站点","：以后改内容只要 ",[180,1941,1002],{"code":1002},"，剩下的 Cloudflare 自己做。",[10,1944,1945],{},"回看整个过程，真正容易卡住的其实只有三处：",[21,1947,1948,1954,1960],{},[24,1949,1950,1953],{},[14,1951,1952],{},"改 NS 之后一直 Pending"," —— 多半是注册商那边没保存成功",[24,1955,1956,1959],{},[14,1957,1958],{},"构建成功但页面 404"," —— 输出目录填错了",[24,1961,1962,1965,1966,1968],{},[14,1963,1964],{},"域名绑不上"," —— 先确认默认的 ",[180,1967,500],{"code":500}," 地址通不通，以此判断问题在哪一层",[10,1970,1971],{},"这篇里的每一步都尽量写清了\"看到什么算成功\"，但实际操作中总会遇到环境差异——你的框架版本、注册商界面、网络环境都可能跟示例不一样。",[10,1973,1974],{},[14,1975,1976],{},"真卡住了就把报错原样贴给 AI，让它带你定位。",[52,1978],{},[55,1980,1982],{"id":1981},"附不想自己一步步点把这段丢给-claude","附：不想自己一步步点？把这段丢给 Claude",[10,1984,1985],{},"下面这段整段复制给 Claude（Claude Code、Claude 桌面版都行），它会替你执行——自己检查环境、跑命令、看报错。遇到必须你本人操作的（比如浏览器授权），它会告诉你。",[173,1987,1990],{"className":1988,"code":1989,"language":178,"meta":182},[176],"帮我把 \u003C你的项目绝对路径> 部署到 Cloudflare Pages，你全程执行，我只在需要浏览器授权时点一下。\n\n1. 检查 node \u002F git 环境，缺什么告诉我怎么装\n2. 读 package.json 确认构建命令，实际跑一次构建，看产物目录在哪\n3. 装 wrangler 并登录（会弹浏览器让我授权）\n4. 创建 Pages 项目并部署，先不绑自定义域名\n5. 把访问地址给我，并实际请求一次确认能打开\n\n报错自己看日志定位修复，需要我做什么直接说。\n",[180,1991,1989],{"__ignoreMap":182},{"title":182,"searchDepth":1993,"depth":1993,"links":1994},4,[1995,1997,1998,2004,2010,2014,2018,2019,2020,2021,2022,2023,2024],{"id":57,"depth":1996,"text":58},2,{"id":187,"depth":1996,"text":188},{"id":232,"depth":1996,"text":233,"children":1999},[2000,2002,2003],{"id":240,"depth":2001,"text":241},3,{"id":263,"depth":2001,"text":264},{"id":482,"depth":2001,"text":483},{"id":506,"depth":1996,"text":507,"children":2005},[2006,2007,2008,2009],{"id":517,"depth":2001,"text":518},{"id":611,"depth":2001,"text":612},{"id":630,"depth":2001,"text":631},{"id":699,"depth":2001,"text":700},{"id":763,"depth":1996,"text":764,"children":2011},[2012,2013],{"id":774,"depth":2001,"text":775},{"id":890,"depth":2001,"text":891},{"id":978,"depth":1996,"text":979,"children":2015},[2016,2017],{"id":989,"depth":2001,"text":990},{"id":1320,"depth":2001,"text":1321},{"id":1374,"depth":1996,"text":1375},{"id":1477,"depth":1996,"text":1478},{"id":1604,"depth":1996,"text":1605},{"id":1691,"depth":1996,"text":1691},{"id":1835,"depth":1996,"text":1835},{"id":1932,"depth":1996,"text":1932},{"id":1981,"depth":1996,"text":1982},[2026],"未分类","2026-09-25","手把手走完 Cloudflare 部署全流程——注册账号、域名托管、DNS 解析、Pages 部署静态站、绑定域名、SSL 配置。每一步都写清\"点哪里、填什么、看到什么算成功\"。",false,"md","\u002Fcloudflare-deploy-cover.jpg",{"category":2033,"slots":2034},"技术",{},true,"\u002F2026\u002Fcloudflare-deploy-guide",null,{"text":2039,"minutes":2040,"time":2041,"words":2042},"21 min read",20.31,1218600,4062,{"title":5,"description":2028},{"loc":2036},"posts\u002F2026\u002Fcloudflare-deploy-guide",[],"tech","f_5SswdvKirujnItI-kgjiS7EdiG7sXLgqUBdbfchMY",[2050,2055],{"title":2051,"path":2052,"stem":2053,"date":2054,"type":2047,"children":-1},"MoeCTF 2026 WP 合集","\u002F2026\u002Fmoectf-xdctf-wp","posts\u002F2026\u002Fmoectf-xdctf-wp","2026-09-02",{"title":2056,"path":2057,"stem":2058,"date":2027,"type":2047,"children":-1},"把桌面 AI 软件变成本地 API：手把手反代教程","\u002F2026\u002Flocal-ai-reverse-proxy","posts\u002F2026\u002Flocal-ai-reverse-proxy",1790348237538]