[{"data":1,"prerenderedAt":229},["ShallowReactive",2],{"content:\u002Fposts\u002F2025\u002Fcaddy":3,"surround:\u002Fposts\u002F2025\u002Fcaddy":218},{"id":4,"title":5,"body":6,"canonical":192,"categories":193,"date":195,"description":196,"draft":197,"extension":198,"image":199,"meta":200,"navigation":201,"path":202,"permalink":192,"readingTime":203,"recommend":192,"references":192,"seo":208,"sitemap":209,"stem":210,"tags":211,"type":192,"updated":195,"__hash__":217},"content\u002Fposts\u002F2025\u002Fcaddy.md","使用 caddy 替换 nginx",{"type":7,"value":8,"toc":183},"minimark",[9,14,24,47,51,63,66,77,80,86,89,93,100,103,109,112,116,119,125,132,135,139,142,149,155,158,166,171,174,180],[10,11,13],"h2",{"id":12},"为什么要使用-caddy-替换-nginx","为什么要使用 Caddy 替换 Nginx？",[15,16,17,21],"ol",{},[18,19,20],"li",{},"Caddy 可以自动化配置 HTTPS，并不需要我们做什么操作。像我们这种个人博客对于 SSL 证书的续期是非常麻烦的，Caddy 可以自动处理这些问题。",[18,22,23],{},"Caddy 默认配置已经启用了HTTP\u002F2。Caddy 会自动处理HTTP\u002F2 的握手和协议协商，无需额外配置",[25,26,27,28,35,36,41,42],"p",{},"你可以阅读",[29,30,34],"a",{"href":31,"rel":32},"https:\u002F\u002Fcaddyserver.com\u002Fdocs\u002F",[33],"nofollow","文档","，也可以参考本文的配置。\n当然也有很多资料才查看，你可以去bilibili查看 ",[29,37,40],{"href":38,"rel":39},"https:\u002F\u002Fspace.bilibili.com\u002F327247876",[33],"技术蛋老师"," 的 ",[29,43,46],{"href":44,"rel":45},"https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1Yq1DYSEHY\u002F",[33],"Caddy服务器之非官方入门教程",[10,48,50],{"id":49},"安装-caddyubuntu","安装 Caddy(Ubuntu)",[52,53,54],"blockquote",{},[25,55,56,57,62],{},"不同服务器的安装方式可能不同，本文以 Ubuntu 为例。详细内容在",[29,58,61],{"href":59,"rel":60},"https:\u002F\u002Fcaddyserver.com\u002Fdocs\u002Finstall",[33],"官方文档","中有说明。",[25,64,65],{},"Caddy 的安装非常简单，直接使用以下命令即可：",[67,68,74],"pre",{"className":69,"code":71,"language":72,"meta":73},[70],"language-bash","sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl\ncurl -1sLf 'https:\u002F\u002Fdl.cloudsmith.io\u002Fpublic\u002Fcaddy\u002Fstable\u002Fgpg.key' | sudo gpg --dearmor -o \u002Fusr\u002Fshare\u002Fkeyrings\u002Fcaddy-stable-archive-keyring.gpg\ncurl -1sLf 'https:\u002F\u002Fdl.cloudsmith.io\u002Fpublic\u002Fcaddy\u002Fstable\u002Fdebian.deb.txt' | sudo tee \u002Fetc\u002Fapt\u002Fsources.list.d\u002Fcaddy-stable.list\nsudo apt update\nsudo apt install caddy\n","bash","",[75,76,71],"code",{"__ignoreMap":73},[25,78,79],{},"安装好后我们可以使用 caddy 看一下它的版本号，确认它安装成功",[67,81,84],{"className":82,"code":83,"language":72,"meta":73},[70],"caddy version\n",[75,85,83],{"__ignoreMap":73},[25,87,88],{},"如果出现版本号就说明安装成功，可以进行下一步了。",[10,90,92],{"id":91},"禁止-nginx-开机启动并停止-nginx服务","禁止 nginx 开机启动，并停止 nginx服务",[25,94,95,99],{},[96,97,98],"strong",{},"我们要确保 80 和 443 端口没有被其他服务占用。"," 所以在安装 Caddy 之前，我们需要确保没有其他服务占用这两个端口。",[25,101,102],{},"如果你的服务器上已经安装了 nginx，那么需要先停止 nginx 服务并禁止它开机启动。",[67,104,107],{"className":105,"code":106,"language":72,"meta":73},[70],"sudo systemctl stop nginx\nsudo systemctl disable nginx\n",[75,108,106],{"__ignoreMap":73},[25,110,111],{},"如果你没有安装 nginx，那么可以跳过这一步。",[10,113,115],{"id":114},"启动-caddy-服务","启动 Caddy 服务",[25,117,118],{},"我们可以使用下面的命令来查看 Caddy 服务的状态",[67,120,123],{"className":121,"code":122,"language":72,"meta":73},[70],"sudo systemctl status caddy\n",[75,124,122],{"__ignoreMap":73},[25,126,127,128,131],{},"如果显示",[75,129,130],{"code":130},"active (running)","，说明 Caddy 服务已经启动。",[25,133,134],{},"如果没有启动或者说 80或者 443 端口被占用，你可以尝试杀掉占用端口的进程",[10,136,138],{"id":137},"配置-caddy","配置 Caddy",[25,140,141],{},"Caddy配置十分简单，你可以使用 Caddyfile 来配置网站的域名、根目录、反向代理等。当然你也可以使用 JSON 格式来配置。我这里使用 Caddyfile 来配置。",[25,143,144,145,148],{},"Caddy 的配置文件位于 ",[75,146,147],{"code":147},"\u002Fetc\u002Fcaddy\u002FCaddyfile","，我们可以使用以下命令打开它：",[67,150,153],{"className":151,"code":152,"language":72,"meta":73},[70],"sudo vim \u002Fetc\u002Fcaddy\u002FCaddyfile\n",[75,154,152],{"__ignoreMap":73},[25,156,157],{},"在 Caddyfile 中，我们可以配置网站的域名、根目录、反向代理等。以下是一个简单的配置示例：",[67,159,164],{"className":160,"code":162,"language":163,"meta":73},[161],"language-caddyfile","# 这里是一个 Nuxt 网站，我们需要进行反向代理\nwww.weilog.me weilog.me { # 这里的配置可以让 www.weilog.me 和 weilog.me 都可以访问\n    reverse_proxy localhost:3000\n}\n\n# 这里是一个静态网站\nme.weilog.me {\n    # Set this path to your site's directory.\n    root * \u002Fcode\u002Fdist\n    # Enable the static file server.\n    file_server\n}\n","caddyfile",[75,165,162],{"__ignoreMap":73},[25,167,168],{},[96,169,170],{},"所有的域名都需要在 DNS 中解析到服务器的 IP 地址。",[25,172,173],{},"配置完毕后我们可以重启一下 Caddy 服务使配置生效：",[67,175,178],{"className":176,"code":177,"language":72,"meta":73},[70],"sudo systemctl restart caddy\n",[75,179,177],{"__ignoreMap":73},[25,181,182],{},"如果没有报错，那么说明 Caddy 配置成功了。",{"title":73,"searchDepth":184,"depth":184,"links":185},4,[186,188,189,190,191],{"id":12,"depth":187,"text":13},2,{"id":49,"depth":187,"text":50},{"id":91,"depth":187,"text":92},{"id":114,"depth":187,"text":115},{"id":137,"depth":187,"text":138},null,[194],"代码","2025-06-15 15:47:28","你是否还在为配置 Nginx 而烦恼？是否还在为 SSL 证书的续期而头疼？Caddy 是一个现代化的 Web 服务器，它可以自动处理 HTTPS 和反向代理等任务，让你专注于开发而不是服务器配置。",false,"md","https:\u002F\u002Fbitmc.uno\u002Fpicgo\u002Fuse-caddy.png",{},true,"\u002Fposts\u002F2025\u002Fcaddy",{"text":204,"minutes":205,"time":206,"words":207},"4 min read",3.59,215400,718,{"title":5,"description":196},{"loc":202},"posts\u002F2025\u002Fcaddy",[212,213,214,215,216],"Nginx","Caddy","服务器","反向代理","HTTPS","XxwvfJjrObQGCzVUliDRtn3cumPykpnVrlfdMva0X64",[219,224],{"title":220,"path":221,"stem":222,"date":223,"type":192,"children":-1},"如何使用 Vue Router 的类型化路由","\u002Fposts\u002F2025\u002Fhow-use-typed-vue-router","posts\u002F2025\u002Fhow-use-typed-vue-router","2025-06-12 16:23:42",{"title":225,"path":226,"stem":227,"date":228,"type":192,"children":-1},"为什么升级至 Nuxt Content v3?","\u002Fposts\u002F2025\u002Fwhy-migrate-to-nuxt-content-v3","posts\u002F2025\u002Fwhy-migrate-to-nuxt-content-v3","2025-06-18 11:19:28",1789642589306]