为什么个人项目我更推荐使用Caddy?

news2024/11/18 5:47:42

Image

为什么个人项目我更推荐使用Caddy?

  • 为什么个人项目我更推荐使用Caddy?
    • 前言
    • 什么是Caddy?
    • Caddy是够用且省心的
    • 简单的配置
    • 自动化 https
    • 结尾
    • 参考链接

前言

最近我把自己一些项目里面的 nginx 换成了 caddy,运转相当良好,比较开心,所以写了这篇文章,也推荐给大家使用。

什么是Caddy?

Caddynginx 一样,也是一个非常棒的跨平台 web server,它是用 go 写的,而 nginx 则是 c。核心功能上比较类似。

谁更牛逼?很明显是 nginxnginx功能多,性能强,而且还有 OpenResty 这种神级项目(国人章亦春大佬写的),这个第一,绝对是当之无愧的。

那么nginx这么强,为啥要换成Caddy呢?

Caddy是够用且省心的

对我们个人项目而言,很多时候往往只需要用到 web server 中的一小部分功能,比如重要的反向代理,https,或者设置额外的 Header,又或者前端那种 history 路由,设置的 try_files 策略等等…

这些功能,往往都已经内置在各个成熟的 web server 内部功能中,我们只需要添加对应的配置,就能够开启并进行使用。

另外相比 nginx,虽然 Caddy 性能差一点(对应有benchmark),但是够用。更重要的是,Caddy 使用起来足够的省心。这个特点主要体现在,足够简单的配置文件和校验和自动化的 https.

简单的配置

是的,Caddy 的配置文件: Caddyfile 非常的简单且语义化, 它由一个一个可嵌套的块 (block) 组成:

Image

Caddy 内部也提供了格式化和校验配置文件合法性的cli命令。而且它还内置了一套 adminrestful api 用来动态的改变配置。

而且它为了适配各种配置格式,还维护了不少的配置文件适配器,比如nginx-adapter,caddy-mysql-adapter
等等。

不过笔者尝试过直接用 nginx.conf 直接起 Caddy,效果一般,还是推荐用官方最原生的 Caddyfile 以避免转化过程中出现的奇奇怪怪的问题。

比如你从 nginx 迁移过来:

    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_pass http://localhost:port;
    }

Caddyfile 里就可以这样写:

example.com {
    # reverse_proxy 和 localhost:port 中间有个 [<matcher>] 
    # 这里不写代表 all,和 glob 里的 * 同理
    # 你也可以显式配置成自己想要的,比如 /api/*
    reverse_proxy localhost:port
}

为什么没有设置 HostX-Forwarded-For?因为 Caddy 默认自动设置好了这些 Header。而且这个配置同时也设置好了 websocket,而 nginx 还要去配置一些协议升级到http 1.1的配置块。

自动化 https

这个可能是 Caddy 的一大特色之一了,正如官方宣传的那样:

Caddy is the first and only web server to use HTTPS automatically and by default.

然而,实际上早就有很多自动化的https项目了,比如nginx + acme.sh/ certbot 也能做到啊。

是的,都可以做到,只不过 Caddy 是直接内置了 ACME protocol server 处理方法,默认开启,而且配置也极其简单。

比如nginx+acme.sh,我们需要配置 nginx 配置的 ssl目录,然后执行 acme.sh 成功之后,还要 systemctl reload nginx.service 即:

acme.sh --install-cert -d mydomain.com \
--cert-file /etc/nginx/certs/mydomain.com/cert \
--key-file /etc/nginx/certs/mydomain.com/key \
--fullchain-file /etc/nginx/certs/mydomain.com/fullchain \
--reloadcmd "systemctl reload nginx.service"

假如 nginx 运行在一个容器里,那就需要给所在容器打上 label,然后设置许多的环境变量。假如你使用 neilpang/acme.sh 镜像,也需要很多的额外操作,容易卡壳,这对我们开发者来说,显然大大提升了错误发生的可能,开发体验不够友好。

Caddy 呢,直接帮你把所有站点的 https 给配置好了,同时连 80443 的策略也弄好了(可关闭此策略)。省去了调试配置的时间,是为省心。

值得注意的是,对于本地的 hostnameip地址Caddy 的自动 https 策略,是直接生成自签名 ssl 证书,它会向你要求一定的权限,需要你进行授权。

而对于可被DNS解析的域名,它就会去请求免费证书了,如下图所示:

Image

它会去 Let's Encrypt 申请 90 天的免费证书,并自动进行续期,我们大部分时候都不需要去管它。

结尾

看到这,你应该知道使用 Caddy 的好处了,对于熟悉 nginx 的我们来说,迁移到它的成本很低。如果你和我一样是一个懒人,推荐你也来试一试。

参考链接

https://github.com/caddyserver/nginx-adapter

https://www.rmedgar.com/blog/using-acme-sh-with-nginx/

https://github.com/acmesh-official/acme.sh/wiki/deploy-to-docker-containers

https://caddyserver.com/docs/caddyfile-tutorial

https://caddyserver.com/docs/caddyfile

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/682021.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java 会员中心管理系统Myeclipse开发mysql数据库web结构jsp编程计算机网页项目

一、源码特点 JSP 会员中心管理系统 是一套完善的系统源码&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;以及相应配套的设计文档&#xff0c;系统主要采用B/S模式开发。 研究的基本内容是基于Web的会员中心管理系…

印刷企业使用MES生产管理系统后,会出现哪些弊端

MES生产管理系统是一种用于企业管理、控制和优化生产过程的管理软件。在印刷企业中&#xff0c;印刷MES管理系统可以帮助企业更好地管理生产过程&#xff0c;提高生产效率和质量。但是&#xff0c;在使用印刷MES管理系统时&#xff0c;也会存在一些弊端。本文将探讨这些弊端&am…

java版本Spring Cloud + Spring Boot +二次开发+企业电子招标采购系统源码

一、立项管理 1、招标立项申请 功能点&#xff1a;招标类项目立项申请入口&#xff0c;用户可以保存为草稿&#xff0c;提交。 2、非招标立项申请 功能点&#xff1a;非招标立项申请入口、用户可以保存为草稿、提交。 3、采购立项列表 功能点&#xff1a;对草稿进行编辑&#x…

基于轻量级yolov5s开发构建车道线实例分割检测识别系统

车道线实例分割检测是指利用计算机视觉技术对图像或视频中的车道线进行精确的识别和定位任务。该任务旨在区分和标记出每条独立的车道线&#xff0c;并提供它们的准确位置和形状信息。 实例分割是目标检测和语义分割的结合&#xff0c;不仅要找到目标的边界框&#xff0c;还需…

【AUTOSAR】AUTOSAR开发工具链(六)----MIL测试操作说明

1.1. 目的 - Objective 根据 ISO 26262 及本公司对基于模型开发时软件的测试要求&#xff0c; 为了使测试人员更加方便快捷地开始进行 MIL 测试&#xff0c;特编写并发布此规范。 2. MIL 测试流程概况 一、确保输入资料的齐全 二、制作测试案例&#xff0c; 并通过审查 三、制作…

最新导则下生态环评报告编制技术暨报告篇、制图篇、指数篇、综合应用篇教程

详情点击链接&#xff1a;最新导则下生态环评报告编制技术暨报告篇、制图篇、指数篇、综合应用篇 一&#xff0c;生态环评报告编制规范 结合生态环境影响评价最新导则&#xff0c;详述不同类型项目生态环评报告编制要求与规范 二&#xff0c;土地利用图 1、土地利用分类体系…

维也纳酒店资深投资人尹鹏伟:陪伴是最长情的告白!

今年以来&#xff0c;经济复苏不断加快&#xff0c;酒店行业迎来井喷式爆发。作为中国中端酒店“开山之作”&#xff0c;在中端酒店风起云涌&#xff0c;内卷加剧&#xff0c;竞争激烈的当下&#xff0c;维也纳酒店却能在全国287个大中小城市在营门店超1300家&#xff0c;在中端…

【AUTOSAR】AUTOSAR开发工具链(七)----HIL测试操作说明(1)

1. HIL 设备操作 本操作说明适用硬件 dSPACE 1006 &#xff0c;软件 dSPACE ControlDesk 3.7.4。 1.1. 硬件操作流程 打开电脑主机 插入 licence 打开 dSPACE 电源开关。 1.2. 软件操作流程 1.2.1. 模型导入与运行 点击 dSPACE ControlDesk 3.7.4 图标进入操作界面。 进入操作…

网页也能裸眼3D?只需一个电脑摄像头就能完成

和2D显示屏、手机屏幕相比&#xff0c;VR图像为什么看起来更加沉浸、立体呢&#xff1f;一方面是透镜将左右眼图像结合&#xff0c;形成3D视觉效果&#xff0c;而另一方面则归功于屏幕画面与头部追踪的同步作用。 简单来讲&#xff0c;就是VR会根据用户头部的位置和朝向来改变…

高工奖项|如何破解智能汽车「缺芯少魂」?破冰者已经出现

对于智能驾驶赛道来说&#xff0c;2023年将是至关重要的一年。芯片短缺影响正在逐步得到缓解&#xff0c;但车市不确定性正在加剧&#xff0c;同时&#xff0c;车企在智能化普及上的成本压力也在凸显。 高工智能汽车研究院监测数据显示&#xff0c;2022年度中国市场&#xff08…

JS--一

三目运算 &#xff1a;用于赋值 switch case return 遍历数组&#xff1a; 一般不用for...in 遍历数组&#xff0c;是因为 for...in 遍历的数组下标&#xff0c;是 字符串形 而是用for...in 遍历 对象 时间监听--addEventListener 时间类型 一定加引号&#xff01;&#xf…

[Web程序设计]实验: 请求与响应

一、实验目的 &#xff08;1&#xff09;掌握浏览器请求时数据的传递和获取。 &#xff08;2&#xff09;掌握服务端响应时数据的传递及获取。 二、实验内容 &#xff08;1&#xff09;编写一个类&#xff0c;该类能够实现在访问完Servlet后&#xff0c;还能在浏览器地址栏…

OSPF快速收敛之FRR

一、实验 OSPF IP FRR&#xff08;Fast ReRoute&#xff0c;快速重路由&#xff09; OSPF IP FRR是动态IP FRR&#xff0c;利用LFA&#xff08;Loop-Free Alternates&#xff09;算法预先计算出备份路径&#xff0c;保存在转发表中&#xff0c;以备在故障时将流量快速切换到备…

编码规范之命名规范

前言&#xff1a; \textcolor{Green}{前言&#xff1a;} 前言&#xff1a; &#x1f49e;这个专栏就专门来记录一下寒假参加的第五期字节跳动训练营 &#x1f49e;从这个专栏里面可以迅速获得Go的知识 今天的笔记是昨天的补充&#xff0c;对编码规范中的命名规范进行总结。主要…

管理类联考——逻辑——知识篇——形式逻辑——六、假言——haimian

假言 考点分析 假言 年度 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023题量106312461345 定义分类 假言命题是断定一全事物情况的存在是另一个事物情况存在的条件的命题&#xff0c;又称条件命题。假言命题可以分为三类&#xff1a;充分条件假言命题、必要…

WPF开发txt阅读器19:加载json格式的配置文件

文章目录 系统参数字典加载参数自动加载配置文件 txt阅读器系列&#xff1a; 需求分析和文件读写目录提取类&#x1f48e;列表控件与目录&#x1f48e;快捷键翻页字体控件绑定&#x1f48e;前景/背景颜色书籍管理系统&#x1f48e;用树形图管理书籍语音播放&#x1f48e;播放进…

大数据从0到1的完美落地之Flume模型

Flume的模型 数据模型 - 单一数据模型 - 多数据流模型 复制代码 单一数据模型 在单个 Agent 内由单个 Source, Channel, Sink 建立一个单一的数据流模型&#xff0c;如下图所示&#xff0c;整个数据流为 Web Server --> Source --> Channel --> Sink --> HDFS。…

ViewModel进阶 | 使用SavedState实现数据复用的另一种方式

前言&#xff1a;金风玉露一相逢&#xff0c;便胜人间无数。 前言 本文需要有上一篇文章基础&#xff0c;如果不了解的可以先看看《由浅入深&#xff0c;ViewModel配置变更的复用详解》 前面我们了解到&#xff0c;ViewModel 它只能做到因为配置变更页面被销毁而导致重建数据…

ModaHub AI模型开源社区:向量数据库Milvus向量索引是什么?

目录 向量索引 索引创建机制 数据段建索引 用户主动创建索引 闲时建索引 索引概览 FLAT IVF_FLAT IVF_SQ8 IVF_SQ8H IVF_PQ RNSG HNSW ANNOY 选择索引 常见问题 参考文献 向量索引 向量索引&#xff08;vector index&#xff09;是指通过某种数学模型&#xf…

软路由系统 --- OpenWrt网络配置(LAN口、WAN口)

这里使用的 OpenWrt 是一台虚拟机安装的. 配置LAN口IP等信息 编辑修改网络配置文件 rootOpenWrt:~# vi /etc/config/network config interface lanoption type bridgeoption ifname eth0option proto staticoption ipaddr 192.168.100.4option netmask 255.255.255.0option i…