Caddy服务器指南

发布于:2025-07-29 ⋅ 阅读:(22) ⋅ 点赞:(0)

Caddy指南

Caddy指南

  • 什么是Caddy–>一个类似于nginx的服务器,默认全程https,用Go语言实现
  • Caddy官网–>https://caddyserver.com/
  • Caddy中文文档–>https://caddy2.dengxiaolong.com/

安装Caddy

  • 安装方法默认和nginx不同,因为目前使用部署很广泛,因此需要手动去安装。

下载主文件

* 去官网下载[Download Caddy (caddyserver.com)](https://caddyserver.com/download)
* 安装插件[Download Caddy (caddyserver.com)](https://caddyserver.com/download)

建立目录体系

  1. 建立用户
#redhat系
adduser -r -d /var/www -s /sbin/nologin caddy 

#debian系
adduser --system --group --disabled-login --home /var/www --shell /sbin/nologin caddy 
  1. 建立目录
#配置文件目录:
mkdir /etc/caddy && chown -R root:caddy /etc/caddy
#配置文件:
touch /etc/caddy/Caddyfile
#SSL证书存放目录:
mkdir /etc/ssl/caddy && chown -R caddy:root /etc/ssl/caddy && chmod 0770 /etc/ssl/caddy
#网站主目录:
mkdir /var/www && chown caddy:caddy /var/www
#编辑systemd单元:
vi /etc/systemd/system/caddy.service
  1. 写入systemd单元内容
[Unit]
Description=Caddy HTTP/2 web server
After=network-online.target
Wants=network-online.target systemd-networkd-wait-online.service

[Service]
User=caddy
Group=caddy
Restart=on-abnormalExecStart=/usr/local/bin/caddy run --config=/etc/caddy/Caddyfile --adapter=caddyfile
ExecReload=/bin/kill -USR1 $MAINPID
; Use graceful shutdown with a reasonable timeout
KillMode=mixed
KillSignal=SIGQUIT
TimeoutStopSec=5s
ProtectSystem=full

[Install]
WantedBy=multi-user.target
  1. 重载systemd:
systemctl daemon-reload
  1. 防火墙放行端口:(CentOS)
firewall-cmd --permanent --zone=public --add-service=http 
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload
  1. 解决Debian端口绑定权限问题:
apt-get install libcap2-bin -y
setcap CAP_NET_BIND_SERVICE=+eip /usr/local/bin/caddy  
#(caddy路径如果不对,可通过which caddy得出)

正向代理

  • 建立网站
localhost
respond "Hello World!"
  • 默认使用https进行访问,会自动生成本地的证书

  • 建立多个网站,使用花括号指定

localhost {
        respond "Hello, world!"
        }

localhost:2016 {
        respond "Goodbye, world!"
        }

反向代理

  • 短期反向代理,直接从命令行输入:
caddy reverse-proxy --from 127.0.0.1:7789 --to 172.17.0.2:8080
  • 通过Caddyfile指定,在同一个目录下面执行caddy run
localhost
reverse_proxy 127.0.0.1:9000

localhost:2016
reverse_proxy 127.0.0.1:9000

身份验证

  • 在Caddy v2中,使用basicauth来实现401验证
  • 需要先生成hash密码
caddy hash-password
  • 接着在已经创建的网站中设置basicauth模块
www.example.com {
	basicauth * {
    	Bob <Hash-密码>
    }
    respond "Hello World!"
}
  • 多模块导入:如果我们需要通过多个模块来进行导入,那么我们需要指定一个模块对象
(basic-auth) { 
	basicauth /secrets/* {
    (username) (hashed password) 
    } 
} 

mytest.mydomain.tld { 
	import basic-auth 
	... 
}

网站公告

今日签到

点亮在社区的每一天
去签到