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

有必要用 Caddy 替换 Nginx 吗

  •  
  •   Popkiler · 39 天前 · 7614 次点击
    这是一个创建于 39 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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