Caddy配置 二娃备忘 【www.erwa.cn】

 下面的操作没有什么实质功能用处,只是个人玩玩云服务和建站,随时更换建站方式或者停用!!

一、erwa建站:只有一个网站!没有用一个主站多个服务的方式。
纯手动方式。没有用小皮,宝塔。

之前安装宝塔,小皮,后来放弃使用。2026-05-03的   erwa.cn工作笔记

image

 

 

 

云服务器的防火墙放行端口:

image

 

 

对比项PHP 内置服务器php-cgiphp-fpm
用途 本地开发、调试 简易部署、小站点 正式生产、高并发网站
性能 很差,单进程 一般,低并发 高性能、多进程
进程管理 无,请求来了就新建进程 自动常驻、进程池、自动控负载
稳定性 差,不抗访问 一般,容易挂 极强,崩溃自动拉起
伪静态 / 路由 有限支持 需前端服务器 (Caddy/Nginx) 配合 完美配合 Caddy/Nginx
适合环境 自己电脑开发 Windows 临时跑站 云服务器、正式建站
Caddy 配合 可反向代理 可被 php_fastcgi 对接 可被 php_fastcgi 对接

 

 

  1. Caddy 不自带 PHP 解释器
  2. 必须把 .php 请求交给下面三者之一:
    • php 内置服务器(反代模式)
    • php-cgi(9000 端口 FastCGI)
    • php-fpm(9000 端口 FastCGI)
Caddy 不管后端是哪个,配置都一样:
php_fastcgi 127.0.0.1:9000
 
 
  • 本地自己开发 → 用:PHP 内置服务器
  • 阿里云跑个人博客、低访问 → 用:php-cgi 够用
  • 以后想稳定、速度快、防崩溃 → 换成:php-fpm
 
 
 

 

二、玩具方案:测试玩一玩

不用Caddy,换Nginx。

  •  阿里云防火墙端口  9000,9001,9002 开放。
  • www.erwa.cn  默认宝塔的Nignx服务器 wordpress
  • www.erwa.cn:9000   才是caddy服务器

 半成功配置:   

测试备忘 :强制刷新浏览器。这是静态网页。index.html

缺点:

1、没有启动证书

2、url必须加\  。

备注:
http://www.erwa.cn:9001 ✅ 正常打开网站
http://www.erwa.cn:9002 ✅ 正常打开网站
http://www.erwa.cn:9000 ✅ 主站正常
http://www.erwa.cn:9000/doc1 ❌ 还是主站首页,不代理
http://www.erwa.cn:9000/doc2 ❌ 还是主站首页,不代理

http://www.erwa.cn:9000/doc1/ ✅ 正常打开网站
http://www.erwa.cn:9000/doc2/ ✅ 正常打开网站

{
    auto_https off
}

# 子网站1
:9001 {
    root * C:/websites/site-b
    file_server
}

# 子网站2
:9002 {
    root * C:/websites/site-a
    file_server
}

# 主网站
:9000 {
    root * C:/websites/site-c

    # 代理 doc1
    handle_path /doc1/* {
        reverse_proxy http://127.0.0.1:9001
    }

    # 代理 doc2
    handle_path /doc2/* {
        reverse_proxy http://127.0.0.1:9002
    }

    file_server
}

 

 

 90%成功配置:

缺点:没有证书。外网访问证书,需要80端口。

域名 www.erwa.cn 80 端口被宝塔 Nginx 占用

Caddy 无法自动申请 Let's Encrypt 公开可信 SSL 证书

ACME 证书申请必须抢占 80/443 端口验证域名所有权,你被宝塔占死了)

✅ 现在全部正常了! 

  • http://www.erwa.cn:9000/doc1
  • http://www.erwa.cn:9000/doc1/
  • http://www.erwa.cn:9000/doc2
  • http://www.erwa.cn:9000/doc2/
  • http://www.erwa.cn:9000
{
    auto_https off
}

# 子网站1
:9001 {
    root * C:/websites/site-b
    file_server
}

# 子网站2
:9002 {
    root * C:/websites/site-a
    file_server
}

# 主网站
:9000 {
    root * C:/websites/site-c

    # 自动补斜杠,让 /doc1 → /doc1/
    rewrite /doc1 /doc1/
    rewrite /doc2 /doc2/

    # 代理
    handle_path /doc1/* {
        reverse_proxy http://127.0.0.1:9001
    }
    handle_path /doc2/* {
        reverse_proxy http://127.0.0.1:9002
    }

    file_server
}

 

 

💡 两个小提醒

  1. 关于自动 HTTPS
    你配置的第一行写了 auto_https off
    • 如果你是在本地测试(就像现在用 :9000 这种端口),这个设置是没问题的。
    • 如果你以后要把 www.erwa.cn 正式对外发布,记得删掉 auto_https off 这一行,并且把 :9000 改成 www.erwa.cn,这样 Caddy 才能自动帮你申请免费的 HTTPS 证书。
  2. 路径截断
    handle_path 指令还有一个好处:它会自动把 /doc1 这个前缀“切掉”再传给后端。
    • 比如你访问 http://...:9000/doc1/index.html
    • 传给 9001 端口的其实是 http://...:9001/index.html
    • 这正是我们通常想要的效果,你的子网站不需要知道 doc1 这个前缀的存在。
 
 
 
 
 
 
 
--------
 

 

失败配置:

1、配置 中 url 访问输出网页日志   

caddy 输出日志启动
 
 

https://www.erwa.cn:9000/doc1 进入的是https://www.erwa.cn:9000/的网页

 

下面配置:   网页显示   

Client sent an HTTP request to an HTTPS server.
 
 
# 开启全局日志
{
    log {
        level DEBUG
        output stdout
    }
}

# 网站 A
localhost:9002 {
    log {
        level DEBUG
        output stdout
    }
    root * C:/websites/site-a
    file_server
}

# 网站 B
localhost:9001 {
    log {
        level DEBUG
        output stdout
    }
    root * C:/websites/site-b
    file_server
}

www.erwa.cn:9000 {
    log {
        level DEBUG
        output stdout
    }
    root * C:/websites/site-c

    # 最高优先级:拦截 doc1
    @doc1 path /doc1 /doc1/*
    handle @doc1 {
        uri strip_prefix /doc1
        reverse_proxy 127.0.0.1:9001
    }

    # 最高优先级:拦截 doc2
    @doc2 path /doc2 /doc2/*
    handle @doc2 {
        uri strip_prefix /doc2
        reverse_proxy 127.0.0.1:9002
    }

    # 其余走主页
    try_files {path} /index.html
    file_server
}

为什么之前一直失败? 

  • 你的 www.erwa.cn:9000 是 HTTPS
  • 但你代理的 9001/9002 是 HTTP
  • Caddy 默认用 HTTPS 去连 9001/9002 → 直接报错!
  • 报错后 fallback 到 index.html → 显示主页

 

http://www.erwa.cn:9000/doc1   如下图:

image

 

https://www.erwa.cn:9000/doc1  如下图:

image

 

 

 

 

 

错误2:

http://www.erwa.cn:9000/doc2/     跳到   http://www.erwa.cn

{
    auto_https off
}

http://localhost:9001 {
    root * C:/websites/site-b
    file_server
}

http://localhost:9002 {
    root * C:/websites/site-a
    file_server
}

:9000 {
    bind 0.0.0.0
    root * C:/websites/site-c

    # 代理
    handle_path /doc1/* {
        reverse_proxy http://127.0.0.1:9001
    }
    handle_path /doc2/* {
        reverse_proxy http://www.erwa.cn
    }

    # 👇 只留这句,删掉 try_files!代理马上生效!
    file_server
}

 

 

二娃备忘

www.erwa.cn

 

posted @ 2026-04-19 14:58  二娃网  阅读(30)  评论(0)    收藏  举报
www.erwa.cn 二娃备忘