在用nginx设置反向代理还不到一天,我看到下面的图片。

什么…… nginx的时代结束了?
无法忍受。
我决定再次从nginx迁移到caddy。
1. 什么是caddy?
Caddy是用Go语言编写的现代网络服务器和反向代理服务器。
由于简单的设置、自动HTTPS、快速性能而非常受欢迎。
根据chatgpt的说法,比较如下表所示。
项目 | Caddy | Nginx |
|---|---|---|
🛠️ 设置难度 | 非常简单 ( | 中等到困难 ( |
🔐 HTTPS支持 | 自动颁发和更新 (Let's Encrypt) | 需要手动设置 (certbot等) |
🚀 安装和运行 | 单一执行文件,即可使用 | 需要包安装,配置后运行 |
📦 基本功能 | 内置反向代理、静态文件、认证、重定向等 | 多样功能,但部分需要模块安装 |
🔧 配置灵活性 | 基础结构直观,对复杂路由稍有局限 | 高度灵活的配置(但复杂) |
📈 性能 | 高性能(包括HTTP/3支持) | 高性能(在大规模流量中验证) |
📋 文档及社区 | 小但快速成长 | 非常大并成熟的社区 |
⚙️ 使用目的 | 快速部署,简单HTTPS,开发者中心 | 高级配置,复杂基础设施运行 |
反正我只是用反向代理进行端口分配。
在这方面,caddy看起来更方便。
2. 从nginx迁移到caddy
据说出战的罗马士兵会烧毁回家的船。
我也是这样,先删除了nginx才开始。
反正每天访问的人还不到100,所以没什么大碍。
brew uninstall nginx
然后删除了/opt/homebrew/etc内不需要的文件夹。
也可以通过下面的命令删除。
sudo rm -rf /opt/homebrew/etc/nginx
接着我安装caddy并设置了Caddyfile,但却没有成功。
后来我发现是因为没有停止nginx服务,所以即使删除后也占用了端口。
看这篇文章的人别犯我这样的错误,在安装caddy之前一定要检查端口。
通过下面的命令检查端口。
lsof是List Open files的缩写,-i表示internet。
lsof -i :80
我真是一个多么愚蠢的人,因为这浪费了2~3个小时……
在停止端口后也不行,于是我采用了万古治愈法——重启。
然后在/opt/homebrew/etc文件夹中创建了一个名为Caddyfile的文件。
顺便说一下,不需要扩展名。
sudo touch /opt/homebrew/etc/Caddyfile
open /opt/homebrew/etc/Caddyfile这样在文本编辑器中就会打开Caddyfile。
然后在这里输入如下内容。
example.com, www.example.com {
reverse_proxy localhost:3000
}在example.com中输入你想要的域名。
如果有两个域名,以逗号分隔。
用过nginx的人都知道,这配置简单得令人抓狂。
接着启动caddy服务器。
brew services start caddy
这样神奇地颁发了证书。
听说还能自动更新,今后就少了一份担心。
3. 后记
最初入门next.js时,大部分都是用server.js进行https设置的文章。
为什么不告诉我caddy……?
比起其他方法,安装nginx或者caddy似乎要好得多。
对此我想简单地写一篇文章。
댓글을 불러오는 중...