前言 https 成为互联网标配,自然得跟上,给自己的博客用加密版的传输协议 https。
首先需要一个域名和一台拥有固定外网 ip 的服务器,使域名可以解析到该服务器上。caddy 可以自动能够向 Let’s Encrypt 申请和续期免费证书,有效期为 3 个月, 到期后自动续期。
博客源码托管在 GitHub,因此需要先安装 git
安装 caddy
1 curl https://getcaddy.com | bash -s personal http.git,http.cors,http.forwardproxy,http.authz,hook.service,dns
添加 caddy 到系统服务
写入内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 # !/bin/bash # # Provides: Caddy # Required-Start: $network $local_fs $remote_fs # Required-Stop: $network $local_fs $remote_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: The HTTP/2 web server with automatic HTTPS # Description: Start or stop the Caddy server # NAME="Caddy" NAME_BIN="caddy" BIN="/usr/local/bin/caddy" if [ -f "/usr/local/caddy/Caddyfile" ]; then CONF="/usr/local/caddy/Caddyfile" elif [ -f "/etc/caddy/Caddyfile" ]; then CONF="/etc/caddy/Caddyfile" fi Info_font_prefix="\033[32m" && Error_font_prefix="\033[31m" && Info_background_prefix="\033[42;37m" && Error_background_prefix="\033[41;37m" && Font_suffix="\033[0m" RETVAL=0 check_running(){ PID=`ps -ef |grep "${NAME_BIN}" |grep -v "grep" |grep -v "init.d" |grep -v "service" |awk '{print $2}'` if [[ ! -z ${PID} ]]; then return 0 else return 1 fi } do_start(){ check_running if [[ $? -eq 0 ]]; then echo -e "${Info_font_prefix}[信息]${Font_suffix} $NAME (PID ${PID}) 正在运行..." && exit 0 else ulimit -n 51200 nohup "$BIN" --conf="$CONF" -agree >> /tmp/caddy.log 2>&1 & sleep 2s check_running if [[ $? -eq 0 ]]; then echo -e "${Info_font_prefix}[信息]${Font_suffix} $NAME 启动成功 !" else echo -e "${Error_font_prefix}[错误]${Font_suffix} $NAME 启动失败 !" fi fi } do_stop(){ check_running if [[ $? -eq 0 ]]; then kill -9 ${PID} RETVAL=$? if [[ $RETVAL -eq 0 ]]; then echo -e "${Info_font_prefix}[信息]${Font_suffix} $NAME 停止成功 !" else echo -e "${Error_font_prefix}[错误]${Font_suffix}$NAME 停止失败 !" fi else echo -e "${Info_font_prefix}[信息]${Font_suffix} $NAME 未运行 !" RETVAL=1 fi } do_status(){ check_running if [[ $? -eq 0 ]]; then echo -e "${Info_font_prefix}[信息]${Font_suffix} $NAME (PID ${PID}) 正在运行..." else echo -e "${Info_font_prefix}[信息]${Font_suffix} $NAME 未运行 !" RETVAL=1 fi } do_tail(){ tail -100f /tmp/caddy.log } do_restart(){ do_stop do_start } do_console(){ do_start do_tail } case "$1" in start|stop|restart|status|console|tail) do_$ 1 ;; *) echo "使用方法: $0 { start | stop | restart | status | console | tail }" RETVAL=1 ;; esac exit $RETVAL
更改权限,加入开机自启动
1 2 chmod 755 /etc/init.d/caddy chkconfig caddy on
编辑配置文件
1 2 mkdir -p /etc/caddy/vhosts vi /etc/caddy/Caddyfile
caddyfile 文件内容
1 2 # 配置文件分开存放 import vhosts/*.conf
具体配置文件
1 vi /etc/caddy/vhosts/hunkier.cn.conf
这里的代码仓库是开放的,若是私有项目,请自行查阅相关资料。
文件内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 hunkier.cn www.hunkier.cn { root /var/www/hunkier/ errors { * 404.html } gzip tls huangkuier@gmail.com git github.com/hunkier/hunkier.github.io { path /var/www/hunkier hook /webhook GitHubSecretKey hook_type github clone_args --recursive pull_args --recurse-submodules branch master } }
更多配置查看 Caddy文档
创建目录
1 mkdir -p /var/www/hunkier
解除链接文件限制
也可以使用 caddy 用作代理服务器用来科学上网(你懂得^_^)
1 vi /etc/caddy/vhost/xxx.hunkier.cn.conf
文件 xxx.hunkier.cn.conf 内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 xxx.hunkier.cn { root /var/www/hunkier/ errors { * 404.html } gzip tls huangkuier@gmail.com forwardproxy { hide_ip hide_via basicauth user1 passwd1 basicauth user2 passwd2 basicauth user3 passwd3 } }
此时 caddy 被用作 web 服务器和代理服务器,协议转换推荐使用gost 。
caddy 服务 启动/停止/重启/检查状态
1 service caddy start/stop/restart/status
启动成功后可以在浏览器里面正常访问 https://hunkier.cn
若启动失败,查看日志
1 tail -100f /tmp/caddy.log