如何在Debian10(Buster)中使用caddy2进行反向代理

4,390 阅读3分钟

      本人偏懒,还有点拖延症,很早以前下决心写博客,但一直得不到执行,这次终于开始执行了。以后有时间就写点技术性文章,希望能帮到需要的人,期待这是个好的开始。

        

*** 首先解释一下我为什么会用debian**

    其实一开始本人压根没用过debian,大学时期第一个使用的linux系统是openSUSE,当初觉得KDE的特效非常华丽,也十分好玩。后来觉得openSUSE不太适合搭建服务器,便开始接触CentOS。不知是运气不好,还是因为手残,我的CentOS服务器往往升级一下内核或者更新一下软件包就会崩溃,再加上服务商提供的备份和恢复工具也不太好使,来来回来折腾几次后,便没了脾气。于是索性重新转移到debian。自从用上debian,服务器便极度稳定,就算打开系统自动更新,也从来没宕过机。唯一的缺点就是,debian的软件包版本普遍比较老旧。

      啰嗦这么多,下面开始进入正题。Debian中配置caddy,网上一搜一大堆结果,大多是某XSDN的文章,大家你抄我的,我抄你的,抄袭从来不用打草稿,而且完全不对结果负责。本文结合自身实践,给出一种Debian10(Buster)中配置caddy2的可靠方法,所有内容都经过测试,十足可信

  • Caddy介绍

       Caddy 是一个用 Golang 写的高效 Web Server,相比 Nginx,它的配置和使用要简单很多,并且支持自动化 HTTPS。并且 Caddy支持自动签订Let’s Encrypt SSL证书,什么都不需要你管,只需要提供一个邮箱,剩下的他会自己申请、配置和续约 SSL证书。

  • Caddy源的添加及安装

      在Caddy第一个版本时代,安装Caddy需要下载安装包,但是在caddy2时代,官方针对

Debian, Ubuntu已经提供了可用的源

1)使用如下语句为Debian添加源:

$ echo "deb [trusted=yes] https://apt.fury.io/caddy/ /" \
    | sudo tee -a /etc/apt/sources.list.d/caddy-fury.list

2)使用apt指令安装Caddy2:

$sudo apt update 
$sudo apt install caddy

     安装之后,caddy会自动注册为一个systemd服务,同时注册一个名为caddy的nologin不可登录帐户。

  • Caddy反向代理配置文件编写

      新版的Caddy2支持使用JSON或者Caddyfile进行配置,由于Caddyfile比较简单,我们沿用Caddyfile方式。一般caddy安装好后,系统使会在/etc目录自动生成一个名为caddy的文件夹,里面包含一个默认的Caddyfile配置(如果没有,可以用touch命令自行创建)。

  1)使用编辑器打开,以Vim为例:

$sudo vim /etc/caddy/Caddyfile

 2)打开后,输入I进行编译,键入以下内容:

#你的域名
xxx.xxxx.com  

#压缩方式
encode gzip  

#tls安全连接,其中xxxx@xxxx.com为你邮箱的地址,caddy据此来自动申请SSL证书
tls  xxxx@xxxx.com {    
   on_demand 
}  

#配置日志文件
log {      
    output file /var/log/caddy.log 
}

#配置服务器页面文件根目录,一般默认为该目录
 root * /usr/share/caddy

# 打开静态文件服务功能
file_server

#反向代理配置,其中/dir为反向代理的目录前缀
#也即只有访问前缀为xxx.xxxx.com/dir时才会进行反代,可依据自身情况调整或删除
#XXXXX为本地反向代理的端口号
reverse_proxy /dir {
   to localhost:XXXXX
}

  你需要依据自身服务器的情况填入正确的域名、邮箱地址、以及本地反向代理目录前缀和端口号。完成配置之后,还有一个重要的步骤便是将相应文件或目录的权限授予caddy,没有这一步时,caddy启动会由于权限问题而报错。

3)为caddy进行访问授权

    访问授权一般使用chown或chmod。一般使用chmod改变文件读写属性即可。需要授权的文件有:/etc/caddy/Caddyfile和/var/log/caddy.log

$sudo chmod o+r  /etc/caddy/Caddyfile
$sudo chmod o+w  /var/log/caddy.log

   通过以上两个命令,授予other用户caddy对/etc/caddy/Caddyfile的读权限和对/var/log/caddy.log的写权限。

   一切完毕后,重新启动caddy即可。

$sudo systemctl restart caddy

  *注意,如果debian打开了防火墙,还应该关闭防火墙对433端口的限制。

   此时,caddy已经可以愉快的奔跑了,快到浏览器中键入自己的域名,测试一下caddy欢迎页吧!

PS: 为符合社会主义核心价值观,扶墙的内容就砍掉了,诸位见谅!