V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Caddy
fy
V2EX  ›  Caddy

Caddy 很可能无法和 cdn 共用,浪费了两个人一下午之后换了 nginx 花 5 分钟搞好了 (腾讯七牛 CDN 相关)

  •  
  •   fy · 2021-03-18 19:17:57 +08:00 · 2375 次点击
    这是一个创建于 1374 天前的主题,其中的信息可能已经有所发展或是发生改变。

    0.

    使用 caddy 的原因是有自动更新 https 证书。

    网络结构很简单,前面有一个域名,caddy 反向代理转给响应程序。

    1.

    先是使用七牛,然后发现半天过不了校验,一直在部署中,我们以为是七牛不行。

    加上七牛的自定义配置选项很少,于是换腾讯云 CDN 。

    然后又试,发现要么不行(403),要么重定向到了服务器内部域名(这个域名可以直接 ping 到服务器 IP)。

    2.

    随后,我们关闭了自动 https 重定向,终于不会暴露内部域名了。

    但现在会稳定得到一个 403 。

    3.

    把回源请求方式改为“始终使用 HTTP”,并且写了一个小服务脚本测试。

    发现了这样的问题:

    Caddy 获得了 CDN 转发来的请求之后,没有转发给上游,直接返回了 403

    随后就是 apt install nginx,10 分钟之后就正常工作了。

    虽然不排除可能是腾讯云和七牛的问题,但我还是对 caddy 感到费解,包括要求配置项的顺序要求也是,让人一头雾水的配置错误提示也是。

    PS. 附上配置和日志,以供参考:

    配置:

    http://xxx.q2test.cn, https://xxx.q2test.cn {
        reverse_proxy localhost:3000
    }
    

    请求失败,返回 403:

    Mar 18 18:26:40 iZbp1a0zoyd681g7u3kpzsZ caddy[522704]: {"level":"error","ts":1616063200.543761,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_addr":"220.194.88.217:21901","proto":"HTTP/1.1","method":"GET","host":"xxx.q2test.cn","uri":"/","headers":{"Upgrade-Insecure-Requests":["1"],"Accept":["text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"],"X-Nws-Log-Uuid":["18288152216455359445"],"X-Tencent-Ua":["Qcloud"],"X-Forwarded-Proto":["http"],"User-Agent":["Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36"],"Accept-Language":["zh-CN,zh;q=0.9"],"D541340abd8120abcb55ffb8fc48b3ce":["tag"],"X-Forwarded-For":["118.113.4.159"],"X-Daa-Tunnel":["hop_count=1"]}},"common_log":"220.194.88.217 - - [18/Mar/2021:18:26:40 +0800] \"GET / HTTP/1.1\" 403 0","duration":0.000036437,"size":0,"status":403,"resp_headers":{"Server":["Caddy"]}}
    

    不通过 cdn 请求成功:

    Mar 18 18:26:59 iZbp1a0zoyd681g7u3kpzsZ caddy[522704]: {"level":"info","ts":1616063219.6977851,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_addr":"117.113.2.139:57097","proto":"HTTP/1.1","method":"GET","host":"xxx.q2test.cn","uri":"/","headers":{"Connection":["keep-alive"],"Upgrade-Insecure-Requests":["1"],"User-Agent":["Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36"],"Accept-Language":["zh-CN,zh;q=0.9"],"If-None-Match":["\"e02aa1b106d5c7c6a98def2b13005d5b84fd8dc8\""],"Cache-Control":["max-age=0"],"Accept":["text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"],"Accept-Encoding":["gzip, deflate"]}},"common_log":"117.113.2.139 - - [18/Mar/2021:18:26:59 +0800] \"GET / HTTP/1.1\" 304 0","duration":0.001917656,"size":0,"status":304,"resp_headers":{"Server":["Caddy","TornadoServer/6.1"],"Date":["Thu, 18 Mar 2021 10:26:59 GMT"],"Etag":["\"e02aa1b106d5c7c6a98def2b13005d5b84fd8dc8\""]}}
    
    4 条回复    2023-02-18 01:03:59 +08:00
    cmostuor
        1
    cmostuor  
       2021-03-18 19:49:25 +08:00
    caddy 官网下载的是 v2 的版本
    Caddy2 的配置写法 得这样
    http://xxx.q2test.cn, https://xxx.q2test.cn {
    route {
    reverse_proxy {
    to localhost:3000
    }
    }
    }
    cmostuor
        2
    cmostuor  
       2021-03-18 19:59:20 +08:00
    官方的文档已经说明了每个 directives 的用法 https://caddyserver.com/docs/caddyfile/directives
    XIU2
        3
    XIU2  
       2021-03-18 20:46:44 +08:00
    我用 Caddy 的主要原因就是,Caddy 只有一个单文件比较绿色便携,配置文件比较简单,很适合用来搭配小项目、临时网站等需求。

    特别是我以前写过的一些需要 HTTP 服务的简单 Web 项目一键安装脚本时,往往会搭配一个简单的 Caddy (而不需要去安装配置一个相比更复杂点的 Nginx,毕竟 Nginx 在有些时候还是感觉有点重~)

    当然如果我的服务器中已经安装的有 Nginx 的话,我就没必要多此一举了。
    qgbcs1
        4
    qgbcs1  
       2023-02-18 01:03:59 +08:00
    unix 套接字地址的语法在 v2 中有所不同。

    unix//run/gunicorn.sock
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2477 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 02:45 · PVG 10:45 · LAX 18:45 · JFK 21:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.