SSL 证书免费,自动续期的web服务器Caddy,Caddy2 实战

Caddy 简介

Caddy官网

Caddy 是由go语言开发的web 服务器 ,和nginx 功能作用相同。但是区别在于caddy 没有很多的依赖,或者说是插件。并且 caddy 实现了 ssl 证书每三个月自动续期,ssl 证书免费 。这意味着 使用 caddy 作为web 服务器 不再有nginx 的 ssl 证书 到期且付费的困扰。

以上优点是我研究caddy的动力之一。

安装Caddy

centos7

yum install yum-plugin-copr
yum copr enable @caddy/caddy
yum install caddy

查看caddy状态

systemctl status caddy

要启动caddy,需要建立一个root用户以外的账户,我这里新建的账户叫做caddy,以下为caddy的配置过程

建立一个用于存放网页文件的目录,如/var/www/html,命令如下:

mkdir /var/www
mkdir /var/www/html

建caddy用户

adduser -r -d /var/www/html -s /sbin/nologin caddy

建立caddy去加载配置文件的路径

mkdir /etc/caddy

建立一个空的caddy工作配置参数文件

touch /etc/caddy/Caddyfile

设置路径的访问权限

chown -R root:caddy /etc/caddy

创建用于存放ssl证书的路径

mkdir /etc/ssl/caddy

chown -R caddy:root /etc/ssl/caddy

chmod 0770 /etc/ssl/caddy

创建用于存放日志的路径

mkdir /var/log/caddy

chown -R caddy:root /var/log/caddy

最后再改一下/var/www/html 这个用于存放网页的路径权限

chown caddy:caddy /var/www/html

改一下配置文件里面的用户信息

查看caddy.service 文件位置

systemctl status caddy

查看 用户和组信息

cat /usr/lib/systemd/system/caddy.service

用户和组都是caddy就不用改了。

设置caddy进程开机自启

systemctl daemon-reload

systemctl enable caddy.service

现在还不能正常成功启动caddy呢,因为还没有配置网站参数信息。

配置网站信息

cd /etc/caddy/

vi /etc/caddy/Caddyfile

Caddyfile文件内容

www.xxx.com {
	# Set this path to your site's directory.
	root * /var/www/html
	
    #log /var/log/caddy/caddy.log

    # Email
    tls user@163.com    
 
	# Enable the static file server.
	file_server

	# Another common task is to set up a reverse proxy:
	# reverse_proxy localhost:8080
}

上传前端网页文件到 /var/www/html目录下

启动caddy服务

systemctl start caddy

查看服务启动状态

systemctl status caddy -l 

基本命令

查看caddy的帮助文档

caddy

Caddy后台服务运行

caddy start

将Caddyfile转化为JSON配置 或 查看 Caddyfile语法是否正确

caddy adapt

重启

systemctl daemon-reload

systemctl restart caddy.service

查看caddy的状态

systemctl status caddy.service

指定配置文件运行caddy

caddy run --config /etc/caddy/Caddyfile
caddy start --config /etc/caddy/Caddyfile

查看日志

 journalctl --no-pager -u caddy

Caddyfile 配置全量配置信息

(handle_info_log) {
	log {
		output file /var/log/caddy/info.log {
                   
                    roll_size 100MiB

                    roll_keep_for 30d
                
                }
                
                format console {

                  time_format wall

                  time_local
                
                }

		level INFO
             
	}
}

(handle_error_log) {
        log {
                output file /var/log/caddy/error.log {

                    roll_size 30MiB

                    roll_keep_for 30d

                }

                format console {

                  time_format wall

                  time_local

                }

                level ERROR

        }
}

(handle_errors) {
	handle_errors {

	     rewrite * /{err.status_code}.html

	     file_server
	}
}

www.xxx.com {

	encode gzip

	import handle_errors

    import handle_info_log
        
    import handle_error_log

    handle /b/* {

       root * /opt/web

       try_files {path} /b/index.html

         file_server

     }

      handle /a/* {

        root * /opt/web

        file_server

      }

	reverse_proxy /framework/* {
		header_down Access-Control-Allow-Origin *
		header_down Access-Control-Allow-Methods GET,POST,OPTIONS
		header_down Access-Control-Allow-Headers X-Requested-With
		to localhost:8081
	}

	reverse_proxy /example/* {
		to localhost:8081
	}

	@logsurl {
		path_regexp logsurl ^/log/(.*)$
	}
	rewrite @logsurl /framework/{http.regexp.logsurl.1}

	@upmsurl {
		path_regexp upmsurl ^/upms/(.*)$
	}
	rewrite @upmsurl /framework/{http.regexp.upmsurl.1}

	@systemsurl {
		path_regexp systemsurl ^/system/(.*)$
	}
	rewrite @systemsurl /framework/{http.regexp.systemsurl.1}

	@workflowsurl {
		path_regexp workflowsurl ^/workflow/(.*)$
	}
	rewrite @workflowsurl /framework/{http.regexp.workflowsurl.1}
}

www.xxx.com : 80 {
    ...
}

解释说明

客户端发送以下请求
https://www.xxx.com/framework/log/queryallLogs。

caddy 服务器会因为路径中的 https://www.xxx.com 开始 走下面这个代码块:

www.xxx.com {

}

接着 /framework/ 会匹配到 如下代码块 :

	reverse_proxy /framework/* {
		header_down Access-Control-Allow-Origin *
		header_down Access-Control-Allow-Methods GET,POST,OPTIONS
		header_down Access-Control-Allow-Headers X-Requested-With
		to localhost:8081
	}
	@logsurl {
		path_regexp logsurl ^/log/(.*)$
	}
	rewrite @logsurl /framework/{http.regexp.logsurl.1}

此时 reverse_proxy 反向代理 将 https://www.xxx.com/framework/代理成
https://localhost:8081;
那么 完整的路径地址 就是 https://localhost:8081/log/queryallLogs。
接着,caddy 发现 该路径的uri 是 以 /log/ 开头的,这时 路径重写指令rewrite 生效,最终路径变成 https://localhost:8081/framework/log/queryallLogs。
祝各位小伙伴学习愉快,欢迎交流。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
微信公众号是一种基于微信平台的个人或机构账号,用户可以通过关注公众号获取内容推送和服务。而Caddy是一款快速的、易用的开源HTTP/2 Web服务器,可以用于搭建自建服务器并提供网页内容。 要将微信公众号接入自建服务器Caddy,首先需要在Caddy服务器中配置相关的参数和路由规则。可以根据微信公众号开发文档中的要求,配置Caddy服务器的监听地址和端口,确保与微信服务器的回调地址一致。同时,还需要配置Caddy服务器SSL证书,以确保安全的https通信。 一旦Caddy服务器配置完毕,还需要在微信公众号开发者平台进行相关设置。将Caddy服务器的地址和接口信息填入平台提供的配置页面,同时设置好token等安全验证参数。微信公众号平台会向该服务器发送不同类型的消息和事件,Caddy服务器需要对这些消息进行处理和响应。 当微信用户与公众号进行互动时,微信服务器会将相关的消息和事件推送给Caddy服务器Caddy服务器接收到消息后,可以根据消息类型进行相应的处理,例如回复文本消息、发送图文消息等。同时还可以执行其他操作,如处理用户关注、取消关注等事件。 通过Caddy服务器接入微信公众号,可以实现更多自定义的功能和服务,比如自定义菜单、消息群发、用户管理等。这样就可以根据自身需求开发出更丰富和个性化的公众号应用。同时,使用Caddy服务器可以提供更稳定、快速和安全的服务,确保良好的用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值