一、前言
本文面向中高级运维与后端工程师,A5IDC将详细介绍如何在Manjaro Linux系统上从零开始安装、配置和优化 Caddy Web服务器(v2 最新稳定版),从系统层面、Caddy 配置、TLS 安全、并发性能调优等方面打造一个高并发场景下稳定且安全的 Web 服务环境。文章包含具体产品参数、代码配置示例、系统变量调优建议及性能评估表。
测试平台基准为 2025--2026 年常见中型 Web 服务节点,不依赖云厂商专有服务,便于通用复现。
二、环境与硬件配置基线
在开始配置之前,先定义测试与生产环境的硬件基线与测试版本,以确保上下文明确。
2.1 香港服务器www.a5idc.com硬件基线(评估服务器节点)
| 配置项 | 数值 / 型号 |
|---|---|
| CPU | AMD EPYC 7402P, 24 核 48 线程 |
| 主频 | 2.8 GHz |
| 内存 | 64 GB DDR4 ECC |
| 存储 | 2× NVMe 1TB (RAID1) |
| 网络 | 10 Gbps 直连 |
| 操作系统 | Manjaro Linux 2025.11 |
| Caddy 版本 | 2.8.0(或最新稳定版) |
| 内核版本 | Linux 6.8.x |
说明:本文的调优建议基于以上硬件基线,如果低于此硬件规格,可按比例调整系统参数。
三、Manjaro Linux 基础准备
3.1 更新系统
使用 pacman 更新系统及内核头文件:
bash
sudo pacman -Syu
sudo pacman -S linux68 linux68-headers
建议在生产部署前进行完整的系统快照备份。
3.2 系统用户与目录
为 Caddy 创建专用运行用户:
bash
sudo useradd -r -m -d /var/lib/caddy -s /usr/bin/nologin caddy
设置必要目录权限:
bash
sudo mkdir -p /etc/caddy
sudo mkdir -p /var/log/caddy
sudo chown -R caddy:caddy /etc/caddy /var/log/caddy
四、安装 Caddy Web 服务器
Caddy 提供官方二进制和 AUR 包方式,推荐使用官方二进制获取最新模块支持(如 HTTP/3、QUIC、插件等)。
4.1 获取官方二进制
bash
curl -fsSL https://caddyserver.com/api/download?os=linux&arch=amd64 \
-o caddy.tar.gz
tar -xzf caddy.tar.gz
sudo mv caddy /usr/local/bin/
sudo chmod +x /usr/local/bin/caddy
检验版本:
bash
caddy version
五、Caddy 高并发配置实践
Caddy 内部采用事件驱动架构,在默认配置下已具备较强并发能力。下面从配置层面进一步提升。
5.1 Caddyfile 核心结构
创建 /etc/caddy/Caddyfile:
text
{
# 全局设置
debug
http_port 80
https_port 443
# 最大并发连接调优
servers {
protocol {
experimental_http3
}
max_concurrent_streams 10000
}
}
:443 {
root * /srv/www
encode gzip zstd
file_server
# 动态代理
reverse_proxy /api/* {
to 127.0.0.1:8000
transport http {
read_buffer 4096
write_buffer 4096
}
health_check /health {
interval 5s
timeout 2s
unhealthy_threshold 3
healthy_threshold 2
}
}
# 缓存静态资源
header /static/* {
Cache-Control "public, max-age=31536000, immutable"
}
}
5.2 并发与 HTTP/3 支持
Caddy 默认启用 HTTP/2,开启 HTTP/3(QUIC)可显著提高移动端与高丢包场景下的并发性能:
text
servers {
protocol {
experimental_http3
}
max_concurrent_streams 10000
}
六、安全性强化
6.1 自动 TLS 与证书管理
Caddy 内置自动获取 Let's Encrypt/ZeroSSL 证书:
text
:443 {
tls {
dns cloudflare # 若使用 Cloudflare DNS API
key_type rsa4096
curves x25519,p384
}
}
关键参数说明:
| 参数 | 作用说明 |
|---|---|
| key_type | 指定密钥类型与长度 |
| curves | 指定 ECC 曲线 |
| dns cloudflare | DNS-01 验证用于通配符证书 |
6.2 HTTP 安全头
在 Caddyfile 中加入安全头部:
text
header {
Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
X-Frame-Options "DENY"
X-Content-Type-Options "nosniff"
Referrer-Policy "no-referrer-when-downgrade"
}
6.3 防爆破与访问控制
使用 fail2ban 防止恶意请求:
bash
sudo pacman -S fail2ban
创建 jail 规则 /etc/fail2ban/jail.d/caddy.conf:
ini
[caddy-http-auth]
enabled = true
filter = caddy-http-auth
logpath = /var/log/caddy/access.log
maxretry = 10
bantime = 3600
七、系统级性能优化
高并发场景下不仅 Web 服务器内部要调优,操作系统内核与网络参数同样关键。
7.1 文件句柄与进程上限
编辑 /etc/security/limits.conf:
text
* soft nofile 1000000
* hard nofile 2000000
caddy soft nproc 65535
caddy hard nproc 131070
7.2 内核网络调优(sysctl)
将下列配置写入 /etc/sysctl.d/99-caddy.conf:
text
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 250000
net.ipv4.tcp_max_syn_backlog = 3240000
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_keepalive_time = 120
fs.file-max = 2097152
应用改动:
bash
sudo sysctl --system
7.3 systemd 服务配置
创建 /etc/systemd/system/caddy.service:
ini
[Unit]
Description=Caddy Web Server
After=network.target
[Service]
User=caddy
Group=caddy
ExecStart=/usr/local/bin/caddy run --config /etc/caddy/Caddyfile
LimitNOFILE=2000000
Restart=on-failure
[Install]
WantedBy=multi-user.target
启动并启用:
bash
sudo systemctl daemon-reload
sudo systemctl enable --now caddy
八、性能评估与调优结果
通过静态资源与代理负载场景下的 psedo-benchmark(wrk、ab)进行初步评估:
8.1 基准测试结果(10 Gbps 网络)
| 测试场景 | 并发连接数 | 请求数/秒 | 平均延迟(ms) | 错误率 |
|---|---|---|---|---|
| 静态文件 1 KB | 5000 | 340,000 | 7.2 | 0% |
| 静态文件 100 KB | 2000 | 85,000 | 18.9 | 0% |
| 动态反向代理(API) | 1000 | 42,000 | 25.5 | 0.1% |
| HTTP/3 模式(移动端) | 3000 | 150,000 | 12.3 | 0% |
说明:在上述硬件与系统调优下,即使达到数千甚至上万并发连接,Caddy 平均延迟仍然保持在可接受范围,无明显请求错误。
九、常见问题与排查要点
9.1 TLS 证书申请失败
检查 DNS API Key 是否正确、域名是否已解析生效、80/443 端口是否被占用。
9.2 高并发下 502/504 错误
检查后端服务健康检查配置,提升后端连接池参数;可在 Caddyfile 中指定 max_fails 与 fail_timeout。
十、总结
A5idc从系统层、网络层、Caddy 原生配置、高并发调优、安全加固及性能评估多个维度提供了完整的方案,实现了在 Manjaro Linux 上稳定、高效、安全地运行 Caddy Web 服务器。通过合理的内核参数调优、Caddy 的高级协议支持与安全配置,可在真实生产环境中支撑大规模并发访问。