封尘网

让学习成为一种习惯!

Caddy替换Nginx解决网站服务功能

使用Nginx已经很多年了,但是也只是使用了它的一部分功能,虽然它安装也很方便,其它很多功能我也并没有使用到。在接触到Caddy后也有两年多了,发现这工具确实不错。于是趁着这个点,把Nginx换掉,使用Caddy实现博客需求。

个人博客比较简单也没用到什么,之前使用Nginx也只是做一个游量入口,把请求响应到后端的Go程序。

所以使用caddy也一样,只需要这样功能就行了。而且caddy会自动实现https功能。这个连证书都不需要去申请了。

 

博客服务器在2月15号就到期了,续费太贵了,只能从新购买一台。在新的机器上我选择了ubuntu系统,以前的服务器都是使用Centos系统,之所有换成ubuntu系统,也是因为我的笔记本也换成了ubuntu系统快三年了,一直使用也很方便。

 

安装caddy软件

  • ubuntu直接根据官方的提供的方式安装

    sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
    curl -1sLf 'https://dl.cloudsmith.io/public/caddy/testing/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-testing-archive-keyring.gpg
    curl -1sLf 'https://dl.cloudsmith.io/public/caddy/testing/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-testing.list
    sudo apt update
    sudo apt install caddy
    
  • 为了方便处理我把配置文件Caddyfile放在了一个目录下

    mkdir .caddy
    cd .caddy
    touch Caddyfile
    
  • Caddyfile的内容如下(根据个人情况需要修改)

    www.58jb.com {
        root * /var/www/caddy
        file_server
    	@cachedFiles {
        	path *.jpg *.jpeg *.png *.gif *.ico *.css
    	}
        header {
            enable HSTS
            Strict-Transport-Security max-age=31536000;
            @cachedFiles Cache-Control "public, max-age=604800, must-revalidate"
            }
    
        @excludeDirs {
            not path /uploads*
        }
        reverse_proxy @excludeDirs 127.0.0.1:8000
    }
    
    • @cachedFiles 定义一个缓存文件列表,以空格分隔
    • header 表示网站响应头里的信息,这里启用了HSTS,它和Strict-Transport-Security配套使用,同时加入了上面的@cachedFiles 缓存表下,把这里文件添加一个缓存时间。
    • @excludeDirs 定义一个排除的目录,因为我的程序主要以Go实现的一个Web服务,而Caddy就是把请求代理到后端的Go程序中,而@excludeDirs中定义的目录是一些静态文件,并不是经过后端程序的,所以把它排除掉。而这个目录是存放在root目录下的。
    • reverse_proxy @excludeDirs 处理一个代理请求,把上面的排除目录加到里面,剩下的都需要经过后端处理。

 

  • 启动服务

    使用apt安装的方式就是简单方便,启动的时候也是很简单。我直接进入到.caddy目录下执行

    cd .caddy
    sudo caddy start           #这样就以后台方式启动,如果使用run的方式就是在当前窗口中启动,服务一直挂着,直到Ctrl+C结束。
    

 

目前来讲Caddy的功能丰富,配置也比较简单。但是更多的高级用法,需要自己去研究一下。用它来替代Nginx的话应该不是问题。感觉比较香的还是网站中的https证书不用管了。

 

提醒:本文最后更新于 219 天前,文中所描述的信息可能已发生改变,请谨慎使用。