• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Popkiler
V2EX  ›  程序员

有必要用 Caddy 替换 Nginx 吗

  •  
  •   Popkiler · May 17, 2022 · 23542 views
    This topic created in 1632 days ago, the information mentioned may be changed or developed.

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

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

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

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

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

    譬如 rewirte 不好弄,有时候还会死机,重启 caddy 才能访问网站。
    padeoe
    padeoe
    May 18, 2022
    70
    给公司团队用上 Caddy 一年了。最重要的原因——"Caddy: Web Server for Humans",语法人性化,各岗位开发都容易上手,基于此实现了网关配置 Devops 。
    adoal
    adoal
    May 19, 2022 via iPhone
    71
    @PolarBears 哈哈,我也在搞这事。nginx 跑起 lua mod 后简直就是一个丐版 waf😄
    ingnoscemihi
    ingnoscemihi
    May 19, 2022
    72
    没有吧,如果你们网络不复杂倒是可以用,比如个人站什么的,复杂业务应该不适合
    billzhuang
    billzhuang
    May 19, 2022
    73
    nginx 对我来说,痛点是,这个 health check 有点拉跨。
    1988chg
    1988chg
    May 19, 2022
    74
    没必要 实话说。
    ungrown
    ungrown
    May 29, 2022
    75
    @krixaar #62 nginx 插件是通过自动修改 nginx 配置文件来实现的,多少有点“就怕万一”它改错了
    wenzhuo
    wenzhuo
    Nov 30, 2024
    76
    @ungrown 备份问题吧,
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1444 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 216ms · UTC 19:38 · PVG 03:38 · LAX 11:38 · JFK 14:38
    ♥ Do have faith in what you're doing.