惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
Comments on: Blog
S
Schneier on Security
Microsoft Azure Blog
Microsoft Azure Blog
T
Tor Project blog
V
Visual Studio Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Spread Privacy
Spread Privacy
月光博客
月光博客
罗磊的独立博客
Cisco Talos Blog
Cisco Talos Blog
P
Privacy International News Feed
T
Tenable Blog
阮一峰的网络日志
阮一峰的网络日志
AWS News Blog
AWS News Blog
T
ThreatConnect
博客园 - 三生石上(FineUI控件)
Recorded Future
Recorded Future
Hugging Face - Blog
Hugging Face - Blog
T
Tailwind CSS Blog
博客园 - 叶小钗
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
A
Arctic Wolf
L
LINUX DO - 最新话题
美团技术团队
大猫的无限游戏
大猫的无限游戏
I
Intezer
博客园 - 司徒正美
酷 壳 – CoolShell
酷 壳 – CoolShell
量子位
小众软件
小众软件
T
Threatpost
V
V2EX
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
宝玉的分享
宝玉的分享
The Register - Security
The Register - Security
Project Zero
Project Zero
J
Java Code Geeks
Cyberwarzone
Cyberwarzone
IT之家
IT之家
MyScale Blog
MyScale Blog
T
Threat Research - Cisco Blogs
T
The Blog of Author Tim Ferriss
腾讯CDC
S
SegmentFault 最新的问题
F
Fox-IT International blog
S
Security Archives - TechRepublic
Last Week in AI
Last Week in AI
G
GRAHAM CLULEY
M
MIT News - Artificial intelligence

Mox的笔记库

细嗦下MLIR的环境搭建 | Mox的笔记库 博客重构:从Hexo到Astro | Mox的笔记库 2026PPoPP MLIR Tutorial学习 | Mox的笔记库 MacOS配置《明日方舟:终末地》 | Mox的笔记库 2025:向内生长 | Mox的笔记库 由mlir::ExecutionEngine引发的跨系统问题 | Mox的笔记库 WSL2配置Cuda-Tile环境记录(未完待续) | Mox的笔记库 Vibe Coding手搓项目记录 | Mox的笔记库 给Debian上包——以DuckDB为例 | Mox的笔记库 UCPD.sys事件存档 | Mox的笔记库 换新电脑之Mac mini M4从购买到配置 | Mox的笔记库 Mac配置MLX-C开发环境 | Mox的笔记库 RISC-V meets RDBMS——RISC-V架构上可运行数据库一览 | Mox的笔记库 DuckDB Sort实现调查 | Mox的笔记库 修复Redis在树莓派5上无法运行的问题 | Mox的笔记库 如何在MLIR中自定义类型并且输出运行 | Mox的笔记库 网站网络结构变更记录 | Mox的笔记库 EDBT25论文阅读:PhoebeDB——A Disk-Based RDBMS Kernel for High-Performance and Cost-Effective OLTP SIGMOD25论文阅读:BPF-DB:——A Kernel-Embedded Transactional Database Management System For eBPF Applications SIGMOD24文章阅读:Query Compilation Without Regrets | Mox的笔记库 论文阅读:Designing an Open Framework for Query Optimization and Compilation Apache Arrow Gandiva项目解析 | Mox的笔记库 VLDB24论文阅读:Cloud-Native Database Systems and Unikernels——Reimagining OS Abstractions for Modern Hardware NoisePage源码分析(未完待续) | Mox的笔记库 VLDB20论文阅读:Mainlining Databases——Supporting Fast Transactional Workloads on Universal Columnar Data File Formats VLDB17论文阅读:Relaxed Operator Fusion for In-Memory Databases:Making Compilation, Vectorization, and Prefetching Work Together At Last 论文阅读:How not to structure your database-backed web applications——a study of performance bugs in the wild SIGMOD24阅读:ROME——Robust Query Optimization via Parallel Multi-Plan Execution 文章阅读:First Past the Post-Evaluating Query Optimization in MongoDB SIGMOD文章阅读:Apache Calcite——A Foundational Framework for Optimized Query Processing Over Heterogeneous Data Sources VLDB23论文阅读:Analyzing the Impact of Cardinality Estimation on Execution Plans in Microsoft SQL Server SIGMOD22论文阅读:Efficient Massively Parallel Join Optimization for Large Queries VLDB论文阅读:Weaving Relations for Cache Performance VLDB22论文阅读:ConnectorX——Accelerating Data Loading From Databases to Dataframes 论文阅读:UniKraft-Fast, Specialized Unikernels the Easy Way 当DuckDB遇上RISC-V | Mox的笔记库 SIGMOD25论文阅读:An Elephant Under The Microscope——Analyzing The Interaction Of Optimizer Components In PostgreSQL 论文阅读:Compile-Time Analysis of Compiler Frameworks for Query Compilation VLDB23阅读:Bringing Compiling Databases to RISC Architectures LingoDB源码编译与分析 | Mox的笔记库 淦!MLIR输出Hello World不应该这么难! | Mox的笔记库 如何愉快的运行一个MLIR程序 | Mox的笔记库 2024:拥挤年代的想象与创造 | Mox的笔记库 如何给自己的博客添加MLIR和LLVM IR语法高亮 | Mox的笔记库 VLDB19-Parsing Gigabytes of JSON per Second论文阅读 CIDR25:Runtime-Extensible Parsers阅读 | Mox的笔记库 MLIR学习资料整理 | Mox的笔记库 SIGMOD24文章阅读:VeriTxn | Mox的笔记库 VLDB23文章阅读——Exploiting Cloud Object Storage for High-Performance Analytics VLDB24——OLAP on Modern Chiplet-Based Processors走马观花阅读 VLDB22:YeSQL文章阅读(已废弃) | Mox的笔记库 如何让数据库中的Python跑的更快-VLDB22-YeSQL文章阅读 | Mox的笔记库 你好,世界! | Mox的笔记库 让系统研究更有意义:HarmonyOS NEXT的教训和经验——讲座回顾 | Mox的笔记库 UNSW 24T3 COMP9336上课记录 | Mox的笔记库 Velox开发环境配置踩坑记录 | Mox的笔记库 MLIR Toy Tutorial实践记录 | Mox的笔记库 论文阅读:Declarative Sub-Operators for Universal Data Processing LLVM-Kaleidoscope实操踩坑记录 | Mox的笔记库 2024年7月RSSHub开发体验 | Mox的笔记库 澳洲大学计算机硕士比较 | Mox的笔记库 论文阅读——CDUL:CLIP-Driven Unsupervised Learning for Multi-Label Image Classification 论批量快速添加图片与视频水印的事 | Mox的笔记库 CVPR2023-CLIP算法调研 | Mox的笔记库 基于元信息写入的服务器压力测试 | Mox的笔记库 MjAyMw==,希望,前进与平庸之道 | Mox的笔记库 家庭组网IPv6+Mesh折腾 | Mox的笔记库 code-server初体验 | Mox的笔记库 Hexo部署安装全流程回顾 | Mox的笔记库 RMM观察与初探 | Mox的笔记库 计算机网络课设——UDP/TCP/TLS Socket实验 | Mox的笔记库 JQuery的XSS初探 | Mox的笔记库 生产实习记录 | Mox的笔记库 Fedora-CoreOS配置与试用(2023年) | Mox的笔记库 Electron学习笔记 | Mox的笔记库 ServerSentEvent学习 | Mox的笔记库 报告翻译:容器云的安全挑战 | Mox的笔记库 Arch Linux迁移计划 | Mox的笔记库 Vagrant配置Metarget靶场环境 | Mox的笔记库 OpenAI-whisper折腾 | Mox的笔记库 202202,困惑,混乱与未曾设想之路 | Mox的笔记库 2022年Hack the box:Tier1免费区全解 | Mox的笔记库 Navidrome部署记录 | Mox的笔记库 长安杯2021-snake复现 | Mox的笔记库 报告概要翻译:OBFUSCATING C++ PROGRAMS VIA CONTROL FLOW FLATTENING 从零开始的Django CVE-2022-28346复现 | Mox的笔记库 2022CISCN(西北区赛)-The shinning | Mox的笔记库 Docker+QEMU+Arm64(Ubuntu)+环境配置(2022版) | Mox的笔记库 Arch Linux运行树莓派系统(2022年) | Mox的笔记库 2022CISCN初赛-ez_usb-复盘WriteUp | Mox的笔记库 NodeMCU-MicroPython配置实录 | Mox的笔记库 Django事务使用 | Mox的笔记库 记录第一次EduSRC上报 | Mox的笔记库 Jetbrain问题应急处理 | Mox的笔记库 Celery5.2学习&配置 | Mox的笔记库 Waline部署记录 | Mox的笔记库 2021年12月 Vivo千镜杯回顾 | Mox的笔记库 Frida hook初次实战 | Mox的笔记库 Log4j2漏洞复现 | Mox的笔记库 Windows的WSL2+Docker初探 | Mox的笔记库
从Nginx到Caddy | Mox的笔记库
2023-12-10 · via Mox的笔记库

起因

长久以来,这个Hexo博客都是以Nginx静态目录的方式,以Docker的形式部署。但随着腾讯云轻量的服务跑的越多,反向代理的需求逐渐增大,让Nginx跑在Docker里终究不太方便。外加服务器系统版本始终没有升级上去(CentOS 7.6),本着尝鲜的心态将Nginx转为了Caddy。

Ask GPT:

Caddy是一个开源的、使用Go编程语言编写的Web服务器引擎。它被广泛使用在Web开发中,因为它的配置简单,功能强大,而且支持HTTP/2和自动HTTPS。

Caddy的主要特点是:

  1. 自动HTTPS:Caddy可以自动从Let’s Encrypt获取和更新SSL证书,为你的站点提供安全的HTTPS连接。

  2. HTTP/2支持:Caddy支持最新的HTTP/2协议,可以提供更快的网页加载速度。

  3. 易于配置:Caddy的配置文件格式简单明了,易于理解和修改。

  4. 插件支持:Caddy有大量的插件,可以为你的服务器添加各种功能

  5. 跨平台:Caddy可以在Windows、Mac、Linux等多种操作系统上运行。

总的来说,Caddy是一个现代化的、易于使用的Web服务器引擎,非常适合用来构建和托管Web应用。

下载

可以去Github搜索Caddy,这应该不难找到。

想要自己加插件的话,需要用到xcaddy。但官网提供套件组合可以编译下载。我自己是选了WebDav和Geoip2两个插件。选好后就可以Download

https://caddyserver.com/download

Tips:

最初是选了WebDav + WebHook的组合,但这个页面编译不通过就放弃了这个打算

配置

首先绕不开的,就是如何把Nginx的configure转为Caddyfile

中文文档参考:https://caddy2.dengxiaolong.com/docs/

英文文档参考:https://caddyserver.com/docs/

最初准备Github Copilot Chat一把梭,但最近GPT 4输出偷懒,只能自己查文档自己写Caddyfile😅

首先是域名跳转。之前博客的网址一直都是https://www.mocusez.site

但现在想想,觉得https://mocusez.site

这个短域名就够了。为此需要加上重定向,并且强制https连接

http://mocusez.site {

redir https://mocusez.site{uri}

}

http://www.mocusez.site {

redir https://mocusez.site{uri}

}

https://www.mocusez.site {

redir https://mocusez.site{uri}

}

想开启静态托管也不难,加上file_server即可,顺带开启gzip压缩传输大小,.git目录隐藏(吐槽一下,.git目录是漏洞不假,但某些机构发邮件提醒是不是太那个啥了😅我这个git目录暴露又没什么关键信息)。

https://mocusez.site {

root * public

file_server {

hide .git

}

encode gzip

}

配置先前的TLS证书需要配置证书路径

tls ssl/mocusez.site_bundle.crt ssl/mocusez.site.key

简单过滤下请求头和请求方法。Caddy就这点上我觉得体验不如Nginx:居然不支持批量检查头部

@badUserAgents header User-Agent *Python-urllib*

respond @badUserAgents 403

@badMethods not method GET HEAD POST

respond @badMethods 403

@notAllowedReferer header_regexp Referer ^(http://localhost|https://mocusez.site).*

respond @notAllowedReferer 403

配置好后,先运行caddy fmt --overwrite对文件格式化使其更耐看

caddy start后台运行。

如果有什么修改就caddy reload,Caddy会检查新修改的配置是否符合规范,不符合规范就会保留原有配置不变,不用担心乱改配置文件导致服务停摆😍。

反向代理这块,比Nginx要省心不少。reverse_proxy一把梭

https://aif.mocusez.site {

reverse_proxy {

to qlma.site

}

}

借此机会把自建的S3图床挂上,解决图片加载过慢的问题。

你跟我说没有HTTPS证书😝?只要设置好DNS指向,Caddy会自动帮我们申请证书,并且自动续期,不再需要去腾讯云的控制面板上申请证书,也不必担心每年的续期申请。

如果要限制访客来源国家,可以使用GeoLite2的数据库进行拦截,插件配置的Example请看https://github.com/zhangjiayin/caddy-geoip2

{

order geoip2_vars first

geoip2 {

databaseDirectory "/data/caddy/geo/"

editionID "Country"

}

}

https://mocusez.site {

geoip2_vars strict

@geofilter expression {geoip2.country_code} != "CN"

redir @geofilter https://www.google.com

}

最后想了想,觉得没什么意思,所以并没有开启相关拦截。

HTTP3

最初知道Caddy是因为其宣称支持HTTP3,而Nginx直到2023年12月还没有合并QUIC分支。而在配置选项里,Caddy也的确有HTTP3的选项。

那么,最后开了没有呢?我的回答是:如开😂

如果你通过Chrome插件wappalyzer查看我的博客,会显示HTTP3是开的

然后打开控制台,协议显示HTTP2

要是用https://http3check.net/检查,甚至可以得到HTTP1.1的报文🙄

后面我还用curl-http3测试了一下,发现依然是HTTP2。看他们英文社区的讨论似乎也不保证最后是以HTTP3的形式访问,所以HTTP3的尝试也就到此为止了

日志处理

参考 一行代码快速配置 Caddy 站点日志 —— 复用 Caddy 配置段 进行配置

(log) {

log {

output file log/{args[0]}/access.log {

roll_size 100MiB

roll_local_time

roll_keep 10

roll_keep_for 2160h

}

format json

}

}

日志分析工具,建议使用GoAccess的Docker版本

https://github.com/allinurl/goaccess#docker

function generate_report() {

cat log/$1/access.log | docker run --rm -i -e LANG="zh_CN.UTF-8" allinurl/goaccess -a -o html --log-format CADDY - > $1.html

}

generate_report mocusez.site

打出报告完以后发现自己博客升级后忘记添加RSS插件😂有意思的意外发现

GoAccess还提供了实时查看,但想想没有必要,就没去做了

tail -F access.log | docker run -p 7890:7890 --rm -i -e LANG=$LANG allinurl/goaccess -a -o html --log-format COMBINED --real-time-html - > report.html

xcaddy

这部分内容更新于2025年7月22日,使用xcaddy更新老旧的Caddy版本

xcaddy build --with github.com/mholt/caddy-webdav --with github.com/zhangjiayin/caddy-geoip2 --with github.com/caddy-dns/tencentcloud

可以看到版本号:

v2.10.0 h1:fonubSaQKF1YANl8TXqGcn4IbIRUDdfAkpcsfI/vX5U=

这个过程非常干净利索,只需要安装好Go和xcaddy即可完成操作

结语

Nginx确实强大好用,但Caddy配置起来更为简单😃

下次要我选,我还选Caddy

另外吐槽下,CentOS7.6确实太老了,但腾讯云轻量又不提供AlmaLinux和RockyLinux的镜像😑。我承认Ubuntu和Debain镜像是不错,但服务器Linux我只选yum系。