caddy2 自动签发证书 附上THINKPHP6伪静态配置
文章目录
dnspod 自动签发野卡证书(通配符证书),自动续订.
最近因为网站证书要到期了,caddy1无法续签了,重新编译也不行.
于是换了caddy2,
caddy1 比较简单,迁移到caddy2各种头大.
自编译caddy2
ps,官方现在有了在线编译工具.可以直接选择一些插件编译. 可以跳过编译步骤,直接云编译带插件版的caddy.
最开始的时候,之所以要编译,是因为2的插件不能外挂,只能编译的时候带上.
当然为了官方为了更方便还是提供一个编译工具 xcaddy
首先需要go1.4以上版本,并且路径加入环境变量.
也就是终端直接输入go是能运行的.
另外需要代理下库文件,不然会很慢很慢
安装xcaddy编译工具
go get -u github.com/caddyserver/xcaddy/cmd/xcaddy
执行会自动编译的,生成可执行文件
./go/bin/xcaddy
编译带dnspod版caddy
xcaddy build --with github.com/caddy-dns/dnspod
可以同时打包编译多个插件,一个插件一个 --with ,多个插件就多个
安装caddy2
可全程参考
https://caddyserver.com/docs/install
1,复制编译的caddy可执行文件到系统环境变量目录/usr/bin
caddy 默认生成可执行文件可能在 ./go/bin/caddy
mv caddy /usr/bin/
2,新建caddy组和用户,用于专门执行caddy
sudo groupadd --system caddy
sudo useradd --system \
--gid caddy \
--create-home \
--home-dir /var/lib/caddy \
--shell /usr/sbin/nologin \
--comment "Caddy web server" \
caddy
3,加入系统启动.
下载官方的服务文件
https://github.com/caddyserver/dist/blob/master/init/caddy.service
到
/etc/systemd/system/caddy.service
sudo systemctl daemon-reload
sudo systemctl enable caddy
sudo systemctl start caddy
自动签发免费野卡证书
因为安装了dnspod dns插件,只需要dnspod的api token即可自动签发证书.
api获取方法
https://www.dnspod.cn/docs/info.html#common-parameters
Caddyfile文件设置
/etc/caddy/Caddyfile 是caddy配置文件.
(dnspod_token) {
dns dnspod 10xxxx,db1296df3c90xxxxxxxxxxxxxxxxxxxx
}
*.getce.cn {
tls {
import dnspod_token
}
#.......
}
rcon.getce.cn:443 {
tls {
import dnspod_token
}
#.......
}
因为我多个域名,要用到token,所以用了这种 import方式,这样,不用每个地方都写token.
这样启动caddy服务器进程就会自动签发证书.
理论上还会自动续签.
thinkphp6 伪静态文件
这个伪静态折腾我非常时间,各种文件.
顺便参考,并询问itlaws.cn博主,加上研究很久才弄出来.
这里是我网站caddy伪静态设置
*.getce.cn {
root * /data/www/newblog/public
tls {
import dnspod_token
}
#用路由依次的顺序解析
route {
# 静态文件整个目录是直接(按文件)输出
file_server /static/*
# 静态解析网站图标
file_server /favicon.ico
# 静态解析 搜索引擎文件
file_server /robots.txt
#将/* 开头重写到index.php
rewrite /* /index.php{uri}
# 引入php解析index.php文件
reverse_proxy 127.0.0.1:19000 {
transport fastcgi {
split .php
}
}
}
}
配置文件解析
首先所有的URL请求都会按路由方式解析.
从上而下依次匹配
file_server /static/*
是将整个static目录里面内容直接静态输出(自动处理mine类型)
同理
file_server /favicon.ico
是将favicon.ico直接静态输出
题外话
你也可以直接根目录直接用file_server解析.这只适合静态网站,不适合PHP
file_server *
或者 file_server /*
或者 直接file_server
意思就是所有文件静态输出.
但是你怎么做的话,你PHP网站没办法跑起来,因为路由从上而下解析,只要符合一条了,那么就退出路由匹配.
如果你直接file_server解析根目录,那么你的根目录index.php将会当文本输出.
rewrite /* /index.php{uri}
这个意思就是将 /后面所有内容 重写到index.php
{uri} 的意思就是排除域名端口协议之外的所有URL信息.
因为前面的路由已经排除了静态文件.所以这些就是你网站需要重新的部分.
这个就是php解析了,只解析php后缀127.0.0.1:9000是PHP-FPM的服务端口.
reverse_proxy 127.0.0.1:9000 {
transport fastcgi {
split .php
}
}
证书自动续约
经过验证.证书会自动续约,无需任何处理.一切caddy2自动完成.
首次服务器部署的时候有效期是
2020年8月3号 --- 2020年11月1号.
于10月2号凌晨,
约证书到期前一个月,自动完成了续约.
我并没有手动重启caddy或者执行其他操作.