dnspod 自动签发野卡证书(通配符证书),自动续订.

 

最近因为网站证书要到期了,caddy1无法续签了,重新编译也不行.

 

于是换了caddy2,

caddy1 比较简单,迁移到caddy2各种头大.

 

 

自编译caddy2

 

ps,官方现在有了在线编译工具.可以直接选择一些插件编译.

 

之所以要编译是因为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
}
*.yge.me {
        tls {
                import dnspod_token
        }
        #.......
}

rcon.yge.me:443 {
        tls {
                import dnspod_token
        }
        #.......
}

 

因为我多个域名,要用到token,所以用了这种 import方式,这样,不用每个地方都写token.

 

 

这样启动caddy服务器进程就会自动签发证书.

理论上还会自动续签.

 

 

thinkphp6 伪静态文件

 

这个伪静态折腾我非常时间,各种文件.

顺便参考,并询问itlaws.cn博主,加上研究很久才弄出来.

 

这里是我网站caddy伪静态设置

 

*.yge.me {
	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
            }
        }