你想在Linux中使用Caddy实现对本地 localhost:8301 服务的反向代理,核心是通过配置 Caddyfile 实现,步骤清晰易懂,包含安装、配置、启动全流程,具体如下:
一、前提准备:安装Caddy(Linux系统通用)
先安装Caddy Web服务器,推荐官方一键安装脚本(支持Ubuntu/Debian/CentOS等主流系统):
# 官方一键安装命令
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg –dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update && sudo apt install caddy -y
安装完成后,可通过 caddy version 验证是否安装成功。
二、核心步骤:配置Caddyfile(实现反向代理)
Caddy的配置核心是 Caddyfile,默认路径为 /etc/caddy/Caddyfile,也可自定义配置文件,下面提供两种配置方式(任选其一):
方式1:使用默认配置文件(推荐,系统级部署)
# 此处填写你的公网IP或已解析的域名(两者可同时填写,用逗号分隔)
yourdomain.com, 1.2.3.4 {
# 核心反代指令:转发所有请求到本地8301端口
reverse_proxy localhost:8301
# 可选:添加基础配置,提升稳定性
encode gzip # 开启gzip压缩,优化访问速度
header {
# 允许跨域访问(若前端需要,可开启)
Access-Control-Allow-Origin *
}
}
# 场景2:仅本地访问(无需公网IP/域名,仅服务器内部或端口映射后访问)
# :80 表示监听服务器80端口(可改为其他端口,如:8080)
:80 {
reverse_proxy localhost:8301 # 核心反代指令,指向本地8301
encode gzip
}
- reverse_proxy localhost:8301:这是实现反向代理的核心指令,Caddy会将接收到的所有请求转发到本地 localhost:8301 服务,并将响应结果返回给客户端。
- 若只需简单反代,保留 reverse_proxy localhost:8301 即可,其他配置为可选优化。
- 监听端口:默认80端口(HTTP),若需HTTPS(自动配置证书),只需填写已解析的域名(Caddy会自动申请Let’s Encrypt证书)。
方式2:自定义配置文件(灵活部署,适合临时测试)
:8080 {
reverse_proxy localhost:8301
}
三、启动Caddy服务,使配置生效
根据配置文件类型,选择对应的启动命令,确保反代功能正常运行:
1. 使用默认配置文件(/etc/caddy/Caddyfile)
# 启动Caddy服务,并设置开机自启
sudo systemctl start caddy
sudo systemctl enable caddy
# 查看服务状态,确认无报错
sudo systemctl status caddy
# 若修改配置后,重新加载配置(无需重启服务)
sudo systemctl reload caddy
2. 使用自定义配置文件
# 进入自定义Caddyfile所在目录
cd ~/caddy
# 启动Caddy(指定配置文件)
# 前台运行(测试用,关闭终端则停止)
caddy run –config Caddyfile
# 后台运行(生产用,不受终端关闭影响)
caddy start –config Caddyfile
# 重新加载配置(修改配置后无需停止服务)
caddy reload –config Caddyfile
# 停止后台运行的Caddy
caddy stop
四、验证反向代理是否成功
- 若配置了公网IP/域名:在本地浏览器访问 http://你的公网IP 或 http://yourdomain.com,若能正常显示 localhost:8301 服务的内容,说明反代成功。
- 若配置了本地端口(如:8080):在服务器上执行 curl http://localhost:8080,或在本地(需端口映射)访问 http://服务器IP:8080,能获取 8301 端口的响应即成功。
五、关键注意事项
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload
reverse_proxy localhost:8301 {
# 将 /api/* 转发到 /v1/api/*(示例)
rewrite /api/* /v1{uri}
}
}



