正将服务器使用的Nginx换为Caddy。原因:
1、自动HTTPS,轻松
2、配置简单,可API配置
3、试图通过它来实现动态域名解析,将它里的Pi3服务器映射出来使用。
4、Caddy是Go开发的,支持插件,可以开发出更多实用功能。
5、普通应用,不存在并发之类的太大区别。
6、QUIC即HTTP3试用。
7、干净、跨平台
需要观察:
1、访问者IP获取
另外
用https://gf.dev/http3-test网站检查,本站已支持HTTP3的H3-29版本协议
其实只是在配置文件中添加了几句
{
servers :443 {
protocol {
experimental_http3
}
}
}
我也对官网的文档作了翻译(机翻加人改): Caddy中文文档
对于golang开发的https服务,可以还原为http服务,由caddy提供https。
2021.11.6
需求的第3点很简。
通过Caddy定义的Token,可以通过HTTP的方式更改配个配置里面的IP地址。
现在的Caddy只能本地API,仔细看看如何远程安全API。
如果本身不能实现外网API,只能另外开发插件完成。
2021.11.7
{
admin 0.0.0.0:12114 {
origins 0.0.0.0
}
}
在全局配置中添加如上配置,允许了所有IP访问localhost:2019,即用于控制。
当然,这是很不安全的,暂时没有发现有安全“钥匙”。
因为使用了VPN,所以可以只供内网修改:
admin 192.168.1.10:12121 {
origins 192.168.1.*
}
暂时连开发都省了,接下来是客户端的POST,脚本应该就可以完成。
通过命令行获取外网IP
$ curl ip.sb
$ curl cip.cc
$ curl ifconfig.me
$ curl icanhazip.com
$ curl ident.me
$ curl ipecho.net/plain
$ curl trackip.net/ip
$ curl ip.cn
$ curl myip.ipip.net
修改的脚本就比较简单了
#!/bin/bash
globalAdd=$(curl -s icanhazip.com)
echo "WanIP:" $globalAdd
curl http://192.168.8.15:12121/config/apps/http/servers/srv0/routes/3/handle/0/routes/0/handle/0/upstreams/0/dial \
-X POST \
-H "Content-Type: application/json" -d '"'$globalAdd':8181"'
2021.11.7
不知道为什么使用外网地址不能访问内容,使用内网地址就可以。
于是想到了不修改Caddyfile,而直接使用vpn内网地址,成功显示内容。
这也意味着我可以将移动宽带中的Pi4放到公网中。