用 Caddy 为你的 IP 加锁:Ubuntu & macOS 双系统 HTTPS 代理教程

Ubuntu系统

下文使用的假IP为192.168.31.33,请自行替换自己的IP

Caddy 在默认的 Ubuntu 22.04 APT 仓库中不可用,但可以通过源代码文件安装,或者在你的服务器上添加最新的仓库信息进行安装。

安装Caddy

  1. 将最新的 Caddy GPG 密钥添加到服务器中

    bash 复制代码
    curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg--dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
  2. 将 Caddy 仓库添加到APT源

    bash 复制代码
    curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudotee /etc/apt/sources.list.d/caddy-stable.list
  3. 更新服务软件包索引

    sql 复制代码
    sudo apt update
  4. 安装 Caddy

    复制代码
    sudo apt install caddy
  5. 查看已安装的 Caddy 版本

    复制代码
    caddy -v
  6. 允许通过防火墙传入HTTP端口80的连接

    复制代码
    sudo ufw allow 80
  7. 重启防火墙以应用更改

    复制代码
    sudo ufw reload
  8. 访问服务器IP以测试Caddy

    arduino 复制代码
    http://192.168.31.33

管理Caddy服务

  1. 启动 Caddy 服务

    sql 复制代码
    sudo systemctl start caddy
  2. 查看 Caddy 服务状态

    lua 复制代码
    sudo systemctl status caddy
  3. 配置开机自启

    bash 复制代码
    sudo systemctl enable caddy

配置 Caddy 代理

以下主要为测试代理以及https是否能生效,具体代理配置请根据自己需要自行修改Caddyfile文件

  1. 创建程序文件目录

    bash 复制代码
    sudo mkdir -p /var/www/example.com
  2. 创建一个新的HTML应用程序文件

    bash 复制代码
    sudo vim /var/www/example.com/index.html
  3. index.html文件中添加以下内容

    css 复制代码
    <h1>Hello World Caddy</h1>
  4. 切换到 Caddy 配置文件目录

    bash 复制代码
    cd /etc/caddy
  5. 配置默认到 Caddyfile 配置

    arduino 复制代码
    mv Caddyfile Caddyfile.default
  6. 创建一个新的 Caddyfile 配置

    复制代码
    vim Caddyfile
  7. 将以下配置添加到 Caddyfile 文件中

    lua 复制代码
    192.168.31.33:1111 {
        root * /var/www/example.com
        file_server {
            index index.html
        }
        log {
            output file /var/log/caddy/example.log
            format console
        }
    }

    真实配置文件可能如下,将1111端口代理转发到2222端口,具体请根据自己需求自行调整

    css 复制代码
    192.168.31.33:1111 {
        reverse_proxy 192.168.31.33:2222
    }

    填写完后按Ese返回命令模式输入:wq保存文件退出

  8. 测试 Caddy 配置是否存在错误

    复制代码
    caddy validate
  9. 重新加载 Caddy 服务

    复制代码
    sudo caddy reload

保护 Caddy Web 服务器

限制对Caddyfile配置的访问,防止意外或未经授权的用户更改。

  1. 授予Caddy用户对etc/caddy目录的完全权限

    bash 复制代码
    sudo chown -R caddy:caddy /etc/caddy
  2. 授权Caddy用户对Caddyfile的读写权限,同时禁止其他系统用户的访问权限

    bash 复制代码
    sudo chmod 600 /etc/caddy/Caddyfile
  3. 使用浏览器访问自己的IP

    arduino 复制代码
    https://192.168.31.33:1111

    看到以下内容说明已经配置成功

    至此你已完成在Ubuntu系统上配置Caddy的所有内容

macOS系统

本文通过brew安装caddy,IP同样使用192.168.31.33假IP

安装brew请访问官网Homebrew

安装caddy

复制代码
brew install caddy

查看caddy版本

复制代码
caddy version

查看配置文件目录

bash 复制代码
cd /usr/local/Cellar/caddy/2.10.0 # 2.10.0为版本号,根据自己安装的目录改
cat homebrew.mxcl.caddy.plist

内容如下

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>EnvironmentVariables</key>
  <dict>
    <key>HOME</key>
    <string>/usr/local/var/lib</string>
    <key>XDG_DATA_HOME</key>
    <string>/usr/local/var/lib</string>
  </dict>
  <key>KeepAlive</key>
  <true/>
  <key>Label</key>
  <string>homebrew.mxcl.caddy</string>
  <key>LimitLoadToSessionType</key>
  <array>
    <string>Aqua</string>
    <string>Background</string>
    <string>LoginWindow</string>
    <string>StandardIO</string>
    <string>System</string>
  </array>
  <key>ProgramArguments</key>
  <array>
    <string>/usr/local/opt/caddy/bin/caddy</string>
    <string>run</string>
    <string>--config</string>
    <string>/usr/local/etc/Caddyfile</string>
  </array>
  <key>RunAtLoad</key>
  <true/>
  <key>StandardErrorPath</key>
  <string>/usr/local/var/log/caddy.log</string>
  <key>StandardOutPath</key>
  <string>/usr/local/var/log/caddy.log</string>
</dict>
</plist>

配置文件所在目录

typescript 复制代码
<string>/usr/local/etc/Caddyfile</string>

创建caddy文件夹

bash 复制代码
cd /usr/local/etc
bash 复制代码
mkdir caddy
cd caddy

创建Caddyfile配置文件

复制代码
vim Caddyfile

Caddyfile配置文件内容如下,自行修改也可像Ubuntu那样去验证

css 复制代码
192.168.31.33:1111 {
    reverse_proxy 192.168.31.33:2222
}

修改homebrew.mxcl.caddy.plist文件

bash 复制代码
cd /usr/local/Cellar/caddy/2.10.0
vim homebrew.mxcl.caddy.plist
typescript 复制代码
<string>/usr/local/etc/Caddyfile</string>
修改为
<string>/usr/local/etc/caddy/Caddyfile</string>

启动caddy

sql 复制代码
brew services start caddy
相关推荐
北鸟南游9 小时前
使用AI智能体的MCP和SKILL
人工智能·程序员·前端框架
带娃的IT创业者11 小时前
AI 时代产品经理能取代程序员吗?一人全栈背后的残酷真相
人工智能·ai·程序员·产品经理·全栈·职业焦虑
两万五千个小时13 小时前
解析 OpenClaw AgentSkills:AI Agent 如何通过「技能包」实现专业化
人工智能·程序员·代码规范
起风了___1 天前
解决大数据渲染卡顿:Vue3 虚拟列表组件的完整实现方案
前端·程序员
程序员鱼皮1 天前
315 曝光的 GEO 投毒是什么?教你 8 招,让 AI 主动推荐你!
ai·程序员·编程·ai编程·seo
壹方秘境2 天前
厌倦了那些看着像一个模版复刻出来的抓包工具,我开发了一款iOS端HTTPS抓包调试工具
ios·程序员·产品
dleei2 天前
彻底淘汰老旧 SVG 插件:unplugin-icons 与 Tailwind CSS v4 自定义图标最佳实践
前端·程序员·前端框架
前端小张同学2 天前
有了AI大家的日常是轻松了还是更焦虑了呢?
人工智能·程序员·ai编程
编码忘我3 天前
JVM 运行时数据区详解
java·后端·程序员