在window平台使用caddy部署简单web功能的服务器
下载与安装
下载caddy程序(Window平台)
caddy官网下载链接:https://caddyserver.com/download
下载好后将文件复制到C:Program FilesCaddy,并将下载的文件重命名为caddy.exe
环境变量
添加window中的环境变量(主要解决cmd不能直接执行exe的命令)
添加好后点击确定并关闭打开的窗口
添加caddy的程序到window服务中(打开cmd执行)
sc.exe create caddy start= auto binPath= "C:Program Filescaddy.exe run"
命令解析:
sc.exe:这是Service Control(服务控制)的缩写,是Windows操作系统中用于与服务控制管理器(SCM)交互的命令行工具。它可以用来创建、删除、查询、配置和启动/停止Windows服务。
create:这是sc.exe命令的一个参数,指示要执行的操作是创建一个新的服务。
caddy:这是你想要创建的服务的名称。在这个例子中,服务被命名为caddy。服务名称在系统中必须是唯一的。
start= auto:这个参数指定了服务的启动类型。auto意味着服务将被配置为自动启动,即在系统启动时自动尝试启动这个服务。其他可能的值包括demand(手动启动)和disabled(禁用)。
binPath= “C:Program Filescaddy.exe run”:这个参数指定了服务的可执行文件(.exe)的路径以及任何需要的命令行参数。在这个例子中,服务的可执行文件是c:caddy.exe
删除服务可用(打开cmd执行)
sc delete caddy
如果添加环境变量后也可直接执行
caddy start
caddy stop
添加后会在服务中显示caddy
也可以使用官网的方法:https://caddyserver.com.cn/docs/running
bat脚本
不想使用环境变量与服务可以使用bat命令代替上面的功能,只是运行中会有cmd窗口一直在前台运行,适合临时使用
@echo off
chcp 65001 >nul 2>&1
:menu
cls
echo =============================
echo 请选择要执行的操作:
echo 1) 启动 Caddy (使用默认配置)
echo 2) 重新加载 Caddy
echo 3) 停止 Caddy
echo 4) 退出
echo =============================
set /p choice=请输入选项(1, 2, 3 或 4):
if "%choice%"=="1" goto startDefaultCaddy
if "%choice%"=="2" goto reloadCaddy
if "%choice%"=="3" goto stopCaddy
if "%choice%"=="4" goto end
:startDefaultCaddy
:: 使用默认配置启动 Caddy
start "Caddy Server" cmd /c "cd /d C:Program FilesCaddy && caddy run"
echo Caddy 已使用默认配置启动.
goto menu
:reloadCaddy
:: 重新加载 Caddy 使用默认配置
start "Caddy Reload" cmd /c "cd /d C:Program FilesCaddy && caddy reload"
echo Caddy 已重新加载.
goto menu
:stopCaddy
:: 停止 Caddy
start "Caddy Stop" cmd /c "cd /d C:Program FilesCaddy && caddy stop"
echo Caddy 已停止.
goto menu
:end
exit
配置文件
再次打开安装目录中,新建一个txt文件,重启名为Caddyfile的文件(不需要.txt扩展名)
编辑Caddyfile文件(可以文本文档编辑),添加如下内容:
www.*******.com {
root * E:/下载
file_server browse
tls ********@qq.com
}
代码解释:
E:/下载 web显示的内容目录
file_server browse 开启目录浏览功能,不加browse为不开启
tls 自动申请https证书,此处需要填写邮箱名
将caddy添加到windows防火墙中
保存后即可启动
启动
sc.exe start caddy
停止
sc.exe stop caddy
输入netstat -na 检查下是否启用监听80与443端口,只有启用80与443端口才能自动申请成功ssl证书
其它说明:
自动申请成功证书文件的目录
C:WindowsSystem32configsystemprofileAppDataRoamingCaddycertificatesacme-v02.api.letsencrypt.org-directory
关于证书的一些其它问题
如需使用www与@解析用同一个证书可以使用
www.1234.com 1234.com {
root * E:/下载
file_server browse
tls ****@qq.com
}
如需使用API申请通配符证书可以使用
*.1234.com {
root * E:/下载
file_server browse
tls {
dns dnspod AP_ID,AP_tokin
}
}
使用API证书时需使用对应的模块
注意:从官网下载时选中对应的模块即可生效
使用域名重定向
1234.com {
redir https://www.1234.com{uri}
}
手动添加模块
阿里云DNS
caddy add-package github.com/caddy-dns/alidns
使用阿里云DNS的的配制,将上面tls内网替换为
tls {
dns alidns {
access_key_id *********
access_key_secret *********
}
}
DNSPOD的DNS
caddy add-package github.com/caddy-dns/dnspod
使用DNSPOD的DNS的的配制,将上面tls内容替换为
tls {
dns dnspod 123456,5689899551214212
}
其它具体语法参考下面模块的连接
一般模块连接地址为包名中显示的地址,如下图
查询已添加的模块信息
caddy build-info
caddy配置basicauth认证 (新版本已使用bcrypt哈希算法生成)
由于caddy配置不接受明文密码,可以使用下面命令进行对密码进行加密
输入密码 123456 ,如下图
那么配制文件为:
1234.com www.1234.com {
encode gzip
root * E:/下载
file_server browse
# 对 E:/下载 目录下所有文件进行认证保护,访问时会提示输入用户名与密码,此处的用户名为test,密码为123456。
basicauth /* {
test $2a$14$pU0EPsxiwT7j2KEAuqBa..fEmMlkXOY1lGMKY/pz72C1aq2B66paK
}
tls *****@qq.com
}
此处的用户名为test, 密码为123456
caddy配制文件中使用的为bcrypt哈希算法生成的密码哈希值。 bcrypt是一种基于哈希函数的加密算法,它使用一个密码和一个盐值作为输入,生成一个固定长度的密码哈希值。这个哈希值在每次密码输入时都会重新生成,而且会随着盐值的改变而改变。bcrypt的盐值是一个随机生成的字符串,与密码一起用于哈希函数中,使得相同的密码在每次加密时都会生成不同的哈希值。
bcrypt是一种密码哈希函数,通常用于存储用户密码的安全散列值。
这个字符串的格式是由几个部分组成的:
2
a
2a
2a: 这是指明使用的哈希算法的标识符,对于bcrypt来说,表示使用的是bcrypt版本 2a。
14$: 这是指明用于加密的工作因子,这里是14,表示加密过程的迭代次数。剩下的部分就是经过哈希后的密码散列值。
请注意,这个字符串本身并不包含密码信息,只是密码的哈希值。 哈希函数是单向的,因此从哈希值中无法还原出原始密码。
原文链接:https://blog.csdn.net/becklee1218/article/details/135282231