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

有必要用 Caddy 替换 Nginx 吗

  •  
  •   Popkiler · 2022-05-17 19:40:35 +08:00 · 18126 次点击
    这是一个创建于 928 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近公司在考虑是否用 Caddy 替换 Nginx, 对 Caddy 我就大概看了基础部分的内容, 还有很多不确定的地方. 希望通过 V2 得到一些建议, 谢谢.

    75 条回复    2022-05-29 20:38:34 +08:00
    seakingii
        1
    seakingii  
       2022-05-17 19:43:38 +08:00   ❤️ 2
    没有必要。和 NGINX 比,没有非 CADDY 不用的场景。
    hdp5252
        2
    hdp5252  
       2022-05-17 19:46:08 +08:00 via Android
    为什么要换,nginx 无法满足需求
    caddy 可以?
    phithon
        3
    phithon  
       2022-05-17 19:46:24 +08:00
    个人项目已经换了,比较方便容器化
    statumer
        4
    statumer  
       2022-05-17 19:59:21 +08:00 via iPhone
    如果你需要自动配置,服务发现,可以用 envoyproxy
    如果你需要自定义逻辑处理,可以用高性能的 ngx-php(一个 nginx 扩展,类似于 openresty)
    有什么理由用 caddy 呢?
    Herry001
        5
    Herry001  
       2022-05-17 20:00:52 +08:00
    没必要,这玩意配置一次基本不用改……而 Caddy 并没有显著的优势。
    LeegoYih
        6
    LeegoYih  
       2022-05-17 20:07:51 +08:00
    除非你们团队擅长用 Go ,并且有对 Canddy 有二次开发的需求,否则肯定优先选 Nginx (我们公司用 OpenResty 和 Tengine
    moen
        7
    moen  
       2022-05-17 20:20:43 +08:00   ❤️ 1
    我能想到 Caddy 的一个好处就是可以不用自己提供 SSL 证书开启 HTTPS
    saltbo
        8
    saltbo  
       2022-05-17 20:22:12 +08:00
    我本来很喜欢 caddy 但是每次当我有点复杂需求的时候 他总让我去官网选择插件下载包含这个插件的版本 我就很烦
    liuzhaowei55
        9
    liuzhaowei55  
       2022-05-17 20:48:16 +08:00 via iPhone
    完全没有必要,容器化简单点可以用 traffic
    cmdOptionKana
        10
    cmdOptionKana  
       2022-05-17 20:59:05 +08:00   ❤️ 1
    如果没有复杂的需要,只是 1.静态网站 2.反代, 推荐用 Caddy 方便。

    举个例子,安装 Caddy 后,vim /etc/caddy/Caddyfile

    blog.example.com {
    root * /home/user/blog/
    file_server
    }

    abc.example.com {
    reverse_proxy 127.0.0.1:8080
    }

    然后 systemctl reload caddy

    这样就有了一个静态站和一个反代网站,都是 https ,这就是一切操作,不需要其他任何操作。

    如果你有比较复杂的需求,可能 nginx 好点,毕竟网上资料多,解决问题方便。
    chinni
        11
    chinni  
       2022-05-17 21:15:58 +08:00
    如果 caddy 只是用来反代 啥的 haproxy 也很可以的
    yuekcc
        12
    yuekcc  
       2022-05-17 21:38:23 +08:00
    对比过 caddy 、nginx 、traefik proxy 。

    caddy 的好处就是自带 auto https 功能、静态文件服务( traefik proxy 没有内置),配置也比较省事; traefik 也支持 letsencrypt 支持,更倾向反向代理场景,动态配置比较方便,和 docker 配合也很容易。

    可是,但凡有点性能需要,应该首选 nginx 。nginx 也支持 letsencrypt ,看着配置比较复杂。
    T0m008
        13
    T0m008  
       2022-05-17 21:39:43 +08:00
    没必要,最熟悉的一般是最好的。
    Love4Taylor
        14
    Love4Taylor  
       2022-05-17 21:52:12 +08:00
    你自己也问是 “必要” 了,自己对比下两边如果没有你需要的功能为啥要换。
    billzhuang
        15
    billzhuang  
       2022-05-17 22:52:20 +08:00
    要么 envoy 要么 traefik
    ysicing
        16
    ysicing  
       2022-05-17 23:04:31 +08:00
    caddy v2 版本感觉不太好用,还是 v1 版本好用。caddy 给我感觉唯一的好处就可以不用手动签发证书,开发自定义插件但是用途不大。
    masterclock
        17
    masterclock  
       2022-05-17 23:09:08 +08:00
    用过 caddy ,没有过好的回忆
    Remember
        18
    Remember  
       2022-05-17 23:09:22 +08:00
    caddy 难道不是个人用的玩具?性能,稳定性,生态之类的有 nginx 好吗?
    wonderfulcxm
        19
    wonderfulcxm  
       2022-05-17 23:12:40 +08:00 via iPhone
    我换成了 openresty ,不用改原来 nginx 配置,可玩性高了很多,lua-auto-ssl 也可以自动申请和续期 ssl 证书。
    kongkongyzt
        20
    kongkongyzt  
       2022-05-17 23:36:09 +08:00
    完全没必要
    jiuhuicinv
        21
    jiuhuicinv  
       2022-05-17 23:41:09 +08:00
    没必要把
    roundgis
        22
    roundgis  
       2022-05-17 23:41:32 +08:00
    我用 caddy 纯粹是为了蹭 https

    它还有一个好处,可以在 windows 下运行
    zvittt
        23
    zvittt  
       2022-05-17 23:46:38 +08:00
    我自己的服务是用 Caddy + Docker Compose 部署的,HTTPS 证书签发方便,不用我操心
    xServ
        24
    xServ  
       2022-05-17 23:54:34 +08:00 via Android
    nginx yyds
    dcsuibian
        25
    dcsuibian  
       2022-05-18 01:58:30 +08:00
    看了一下评论,不用学新东西真是太好了
    PolarBears
        26
    PolarBears  
       2022-05-18 02:49:48 +08:00
    要不考虑换 OpenResty 吧,最近我也从 Nginx 换到 OpenResty 上了
    xyjincan
        27
    xyjincan  
       2022-05-18 05:19:16 +08:00 via Android
    感觉这个更安全,输入不符合的域名无法访问资源
    arischow
        28
    arischow  
       2022-05-18 06:51:44 +08:00 via iPhone
    这个更换能解决你们什么需求或者说有什么用户价值?考虑到这是一个公司项目
    Quarter
        29
    Quarter  
       2022-05-18 07:45:14 +08:00 via iPhone
    @roundgis #22 nginx 也可以啊
    v2defy
        30
    v2defy  
       2022-05-18 08:13:01 +08:00 via Android
    Caddy 用过一点,感觉不是太好
    IvanLi127
        31
    IvanLi127  
       2022-05-18 08:15:19 +08:00 via Android
    caddy 感觉上比较安全现代,简单用用还是很不错的。复杂场景下似乎功能不如 nginx 全,周边也不够全。
    krixaar
        32
    krixaar  
       2022-05-18 08:22:51 +08:00
    没必要,caddy v1 那会儿图个方便,caddyfile 写那么几行啥都搞定了,caddy v2 配置变复杂了,果断切回 nginx+certbot 。
    如果 certbot 能修好续签时不时崩掉 nginx 的那个 bug 就完美了。
    vishun
        33
    vishun  
       2022-05-18 08:54:18 +08:00
    @seakingii #1 有的,在 windows 下,nginx 就是各半成品,性能比不上 caddy ,当然还是 iis 性能最高。
    sugars
        34
    sugars  
       2022-05-18 08:55:49 +08:00
    先说说你们更换的原因?
    mepwang
        35
    mepwang  
       2022-05-18 09:02:33 +08:00
    docker 映像 jrcs/letsencrypt-nginx-proxy-companion 也能自动更新证书,也不需要配置
    olaloong
        36
    olaloong  
       2022-05-18 09:25:33 +08:00
    之前想换 Caddy ,结果配置愣是没看明白,劝退
    还是 Nginx 香
    northernlights0
        37
    northernlights0  
       2022-05-18 10:05:50 +08:00
    没必要吧,caddy 就是胜在语言用的是 golang 以及配置简单。性能上 nginx 优于 caddy 。
    seakingii
        38
    seakingii  
       2022-05-18 10:28:43 +08:00
    @vishun 我还真没想到有人用 WINDOWS 跑 WEB SERVER ,不多见。
    ragnaroks
        39
    ragnaroks  
       2022-05-18 10:36:33 +08:00
    两者没有可比性,但是既然楼主问了,就代表心里是想替换的,这里建议从心
    thinkershare
        40
    thinkershare  
       2022-05-18 10:57:18 +08:00
    @seakingii 和你所在的行业有关系, 我们这个行业使用 Linux 才是非主流, 基本清一色 Windows Server 2016, 没有专业运维, 使用 Linux 纯粹是给自己找麻烦!
    missdeer
        41
    missdeer  
       2022-05-18 10:58:38 +08:00
    个人从 nginx 切到 caddy v1 ,后来 caddy v2 出来了居然配置文件大变,切回 nginx 美滋滋
    missdeer
        42
    missdeer  
       2022-05-18 11:01:01 +08:00
    @vishun 既然用 Windows 了,那就用 IIS 呀,如果可以不用 IIS ,说明也不那么在乎性能,nginx 损失的那些性能也能接受了
    zoharSoul
        43
    zoharSoul  
       2022-05-18 11:06:52 +08:00
    @thinkershare #40 啥行业啊? 好奇问一下
    neoblackcap
        44
    neoblackcap  
       2022-05-18 11:10:26 +08:00
    @saltbo 没办法,没法动态加载库
    thinkershare
        45
    thinkershare  
       2022-05-18 11:25:23 +08:00
    @zoharSoul ZF 部门, 公共资源交易中心, 还有一些是涉密的, 不方便说.
    dingyaguang117
        46
    dingyaguang117  
       2022-05-18 11:28:08 +08:00
    没必要,查文档找问题没有 nginx 资料多
    yaoyao1128
        47
    yaoyao1128  
       2022-05-18 11:51:27 +08:00 via iPhone
    没必要
    caddy 的最大优势是现在可能就是反代加 https 基本傻瓜化
    如果你不用自动更新证书的话个人觉得 nginx 更好用……
    iyaozhen
        48
    iyaozhen  
       2022-05-18 12:19:54 +08:00
    没必要吧,这也太吃饱了撑着。不搞出几个线上问题,不舒服?
    Kinnice
        49
    Kinnice  
       2022-05-18 12:27:33 +08:00
    是想要创造几个线上事故?
    qbqbqbqb
        50
    qbqbqbqb  
       2022-05-18 12:35:18 +08:00
    caddy 主要卖点就是自动申请和续签免费 https 证书,如果用不到的话没必要换
    VagrantZ
        51
    VagrantZ  
       2022-05-18 12:36:58 +08:00
    nginx 似乎是没法反代 http2 ,caddy 好像可以?
    whx
        52
    whx  
       2022-05-18 12:43:08 +08:00 via iPhone
    感觉 caddy 和 nginx 比,像个玩具。
    开发团队很激进,更新一个版本就各种大改。
    简单的需求用 caddy 可能比 nginx 简单,几行配置证书什么的都给你搞定。
    如果有些稍微复杂一点的需求,就要自己去编译。
    比如一个日志自定义格式化,研究了好久。最后得出结论,要自己去编译。之前的版本是支持的,后来更新了去掉了。
    之前用 nginx 我都是直接 apt update ,从来没出过问题。
    用 caddy 升级版本前我都得反复确认,不知道升级了哪些功能就被去掉了。
    ZE3kr
        53
    ZE3kr  
       2022-05-18 12:46:29 +08:00 via iPhone
    @seakingii HTTP3 Nginx 就不行了吧
    daydaysay
        54
    daydaysay  
       2022-05-18 12:47:42 +08:00
    为什么 nginx 性能就高于 caddy 。 只因为 nginx 是 C 写的?
    xumng123
        55
    xumng123  
       2022-05-18 15:07:46 +08:00 via iPhone
    没必要
    Te11UA
        56
    Te11UA  
       2022-05-18 15:09:30 +08:00
    @PolarBears #26 为什么用 openresty 呢?
    leeyuzhe
        57
    leeyuzhe  
       2022-05-18 15:13:01 +08:00
    我个人网站用的 caddy ,公司不推荐,因为对比 nginx 没有非用不可的理由
    bipy
        58
    bipy  
       2022-05-18 16:04:34 +08:00
    别换 坑太多
    bugfan
        59
    bugfan  
       2022-05-18 16:42:08 +08:00
    3 ,4 年不用 nginx 了,一直都是用 golang 自己实现的代理,签发证书,tls 加载卸载,日志审计,访问规则等等
    ungrown
        60
    ungrown  
       2022-05-18 16:48:05 +08:00
    @yaoyao1128 #47 nginx 自动更新 letsencrypt 的证书也挺方便
    证书用 webroot 方式创建、更新(剩下的交给 certbot 自带的 cron 任务)
    certbot 配置里面加个 renew 的 hook ,重启 nginx (重新加载更新后的证书)
    然后最最关键的就是在 nginx 每个站点配置里加一个特殊的 location ,写成 snippet ,直接在每个 http 的 server 里面 include
    https://github.com/mo-han/mo-han-toolbox/blob/master/etc/nginx/snippets/location-acme-challenge
    https://github.com/mo-han/mo-han-toolbox/blob/master/etc/nginx/snippets/location-acme-challenge-with-fallback
    PolarBears
        61
    PolarBears  
       2022-05-18 17:02:06 +08:00
    @Te11UA #56 陈旧的应用系统没有维护但又有漏洞,我就用 OpenResty 来修补漏洞
    krixaar
        62
    krixaar  
       2022-05-18 17:02:10 +08:00
    @ungrown #60 certbot --nginx 就行了吧……
    Te11UA
        63
    Te11UA  
       2022-05-18 17:08:54 +08:00
    如果仅仅是因为 https 的话,用 certbot 加个定时任务不就可以了吗
    pursuer
        64
    pursuer  
       2022-05-18 20:37:29 +08:00
    nginx 在 windows 性能不好吗?什么原因?我记得 windows 下面是用的 IOCP ,性能应该不差的吧
    drackzy
        65
    drackzy  
       2022-05-18 22:04:08 +08:00
    Caddy 出点 bug 折腾死。基础的没必要换成 Go 的轮子。
    among
        66
    among  
       2022-05-18 22:08:40 +08:00
    作为绿色版程序用挺好。简单测试使用够了。
    bankroft
        67
    bankroft  
       2022-05-18 22:10:43 +08:00
    自用我从 caddy 换成了 traefik
    JQSM
        68
    JQSM  
       2022-05-18 22:23:42 +08:00
    caddy v2 之后配置复杂了很多,既然都复杂那还是用 nginx 比较好,网上资料多,出问题容易解决。
    yun
        69
    yun  
       2022-05-18 22:49:50 +08:00
    用了两年 Caddy ,从 1 到 2 ,确实不错,但不适合复杂的网络环境。

    譬如 rewirte 不好弄,有时候还会死机,重启 caddy 才能访问网站。
    padeoe
        70
    padeoe  
       2022-05-18 22:53:01 +08:00
    给公司团队用上 Caddy 一年了。最重要的原因——"Caddy: Web Server for Humans",语法人性化,各岗位开发都容易上手,基于此实现了网关配置 Devops 。
    adoal
        71
    adoal  
       2022-05-19 00:57:04 +08:00 via iPhone
    @PolarBears 哈哈,我也在搞这事。nginx 跑起 lua mod 后简直就是一个丐版 waf😄
    ingnoscemihi
        72
    ingnoscemihi  
       2022-05-19 02:04:23 +08:00
    没有吧,如果你们网络不复杂倒是可以用,比如个人站什么的,复杂业务应该不适合
    billzhuang
        73
    billzhuang  
       2022-05-19 11:11:08 +08:00
    nginx 对我来说,痛点是,这个 health check 有点拉跨。
    1988chg
        74
    1988chg  
       2022-05-19 11:59:02 +08:00
    没必要 实话说。
    ungrown
        75
    ungrown  
       2022-05-29 20:38:34 +08:00
    @krixaar #62 nginx 插件是通过自动修改 nginx 配置文件来实现的,多少有点“就怕万一”它改错了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2674 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 12:06 · PVG 20:06 · LAX 04:06 · JFK 07:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.