Caddy2使用阿里云DNS申请https证书,利用阿里云DNS境内外不同解析给Gone文档做一个同域名的国内镜像站点

我从头到尾实现了一个Golang的依赖注入框架,并且集成了gin、xorm、redis、cron、消息中间件等功能;自己觉得还挺好用的,并且打算长期维护!
github地址:https://github.com/gone-io/gone
文档原地址:https://goner.fun/zh/guide/auto-gen-priest.html
请帮忙在github上点个 ⭐️吧,这对我很重要 ;万分感谢!!

文章目录

    • 缘起
    • 重新编译Caddy
    • 再编写一个docker-compose.yaml来管理容器
    • Caddyfile
    • 设置阿里云的密钥

缘起

我编写了Gone框架的文档,放在了github 的Pages上,地址为https://goner.fun;奈何,国内小伙伴反馈访问不到或者太慢了。于是,我计划搭建一个国内镜像站点,让国内的用户通过国内的镜像站点访问。

都2402年了,网站自然要配置https证书,不想花钱不想经常手动更新证书,所以计划使用Caddy来做镜像服务器,可以自动申请并续期证书。

Caddy可以通过直接通过IP地址验证域名申请证书,**Let’s Encrypt ** 会通过80端口检查IP地址和DNS记录是否一致。然而在我们这种情况下是不行的,我的域名境外解析已经指向了github pages 的CNAME。

在这里插入图片描述
为此,只能让Caddy申请证书时,走 DNS Challenge。

重新编译Caddy

我们这里采用docker容器来编译。

编写Dockerfile文件

FROM caddy:2.8-builder AS builder
RUN go env -w GO111MODULE=on
RUN go env -w GOPROXY=https://goproxy.io,directRUN caddy-builder github.com/caddy-dns/alidnsFROM caddy:2.8
COPY --from=builder /usr/bin/caddy /usr/bin/caddy
COPY Caddyfile /etc/caddy/Caddyfile

再编写一个docker-compose.yaml来管理容器

version: "3.8"
services:mirror:build:context: .ports:- "80:80"- "443:443"environment:ALIYUN_ACCESS_KEY_ID: ${ALIYUN_ACCESS_KEY_ID}ALIYUN_ACCESS_KEY_SECRET: ${ALIYUN_ACCESS_KEY_SECRET}volumes:- ./www:/usr/src/www- ./log:/data/log- ./Caddyfile:/etc/caddy/Caddyfile- ./ssl:/data/caddy/certificates

Caddyfile

编写Caddy的配置文件,注意使用前端路由的指令:try_files {path} {path}/ /index.html;意思是如果找不到文件,就在同名目录中找,如果同名目录找不到就使用根目录的/index.html

{debug
}goner.fun {log {output file /data/log/donteatcats.world/access.log {roll_size 100MiBroll_local_timeroll_keep 10roll_keep_for 2160h}}encode gziproot * /usr/src/wwwfile_servertry_files {path} {path}/ /index.htmltls {dns alidns {access_key_id {env.ALIYUN_ACCESS_KEY_ID}access_key_secret {env.ALIYUN_ACCESS_KEY_SECRET}}}
}

设置阿里云的密钥

# 创建环境变量文件
touch .env

配置:

ALIYUN_ACCESS_KEY_ID=
ALIYUN_ACCESS_KEY_SECRET=

代码已经整理到:https://github.com/gone-io/doc-mirror

我从头到尾实现了一个Golang的依赖注入框架,并且集成了gin、xorm、redis、cron、消息中间件等功能;自己觉得还挺好用的,并且打算长期维护!
github地址:https://github.com/gone-io/gone
文档原地址:https://goner.fun/zh/guide/auto-gen-priest.html
请帮忙在github上点个 ⭐️吧,这对我很重要 ;万分感谢!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/11545.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024CCPC郑州站超详细题解(含题面)ABFHJLM(河南全国邀请赛)

文章目录 前言A Once In My LifeB 扫雷 1F 优秀字符串H 随机栈J 排列与合数L Toxel 与 PCPC IIM 有效算法 前言 这是大一博主第一次参加xcpc比赛,虽然只取得了铜牌,但是收获满满,在了解了和别人的差距后会更加激励自己去学习,下面…

MySQL变量的定义与应用

DQL #MySQL变量的定义与应用 set userName小可爱; select userName; # 定义数值类型整数小数 set x5,y7; select xy, x-y, x*y,x/y; #1、字符串查询 set cityNameHaag; SELECT * FROM city where Name cityName; #2、数值类型 set popvalue105819; select * from city where P…

Python Pandas 数据分析快速入门

Python Pandas 数据分析快速入门 Pandas 是一个开源的 Python 数据分析库,它提供了高效的 DataFrame 结构来处理大型数据集,常用于数据清洗和分析工作。在本教程中,我们将介绍如何使用 Pandas 进行基本的数据分析操作,以及如何处…

34岁2个娃的女程序真的要回归家庭了吗?

我34岁已婚已育,家里两个娃。在去年年末的裁员大潮中被裁了。目前已经找工作2个月,本来被裁我还挺开心的,我老二还在哺乳期,妥妥的4n的工资。赶紧裁了要我好好玩玩吧。抱着这种兴高采烈的心态那这赔偿跑路了。刚好被裁之后紧接着就…

Python从0到POC编写--函数

数学函数: 1. len len() 函数返回对象(字符、列表、元组等)长度或项目个数, 例如: str "python" len(str)2. range range() 函数返回的是一个可迭代对象(类型是对象),…

并行执行的4种类别——《OceanBase 并行执行》系列 4

OceanBase 支持多种类型语句的并行执行。在本篇博客中,我们将根据并行执行的不同类别,分别详细阐述:并行查询、并行数据操作语言(DML)、并行数据定义语言(DDL)以及并行 LOAD DATA 。 《并行执行…

对Whisper模型的静音攻击

针对Whisper模型的静音攻击方法主要针对基于Transformer的自动语音识别系统,特别是Whisper系列模型。其有效性主要基于Whisper模型使用了一些“特殊标记”来指导语言生成过程,如标记表示转录结束。我们可以通过在目标语音信号前添加一个通用短音频段&…

vue项目通过点击文字上传html文件,查看html文件

上传html文件 解决思路&#xff1a;新建一个上传组件&#xff0c;将它挪到页面之外。当点击文字时&#xff0c;手动触发上传组件&#xff0c;打开上传文件框。 <template><BasicTable register"registerTable"><template #bodyCell"{ column, …

UIButton案例之添加动画

需求 基于上一节代码进行精简&#xff0c;降低了冗余性。添加动画&#xff0c;使得坐标变化自然&#xff0c;同时使用了bounds属性和center属性&#xff0c;使得UIView变化以中心点为基准。 此外&#xff0c;使用两种方式添加动画&#xff1a;1.原始方式。 2.block方式。 代码…

vm虚拟机扩容centos磁盘内存

1.查看虚拟机扩展前磁盘内存 df -h 2.关机情况下扩展磁盘内存 3.对扩容的磁盘分区 fdisk /dev/sda 输入n新增分区&#xff0c;回车&#xff0c;选择p&#xff0c;回车 为分区设置分区格式&#xff0c;在Fdisk命令处输入&#xff1a;t 分区号用默认 3&#xff08;或回车&…

OSS证书自动续签,一分钟轻松搞定,解决阿里云SSL免费证书每3个月失效问题

文章目录 一、&#x1f525;httpsok-v1.11.0支持OSS证书自动部署介绍支持特点 二、废话不多说上教程&#xff1a;1、场景2、实战Stage 1&#xff1a;ssh登录阿里云 ECSStage 2&#xff1a;进入nginx &#xff08;docker&#xff09;容器Stage 3&#xff1a;执行如下指令Stage 3…

测试环境搭建整套大数据系统(十六:超级大文件处理遇到的问题)

一&#xff1a;yarn出现损坏的nodemanger 报错现象 日志&#xff1a;1/1 local-dirs usable space is below configured utilization percentage/no more usable space [ /opt/hadoop-3.2.4/data/nm-local-dir : used space above threshold of 90.0% ] ; 1/1 log-dirs usabl…

01-02-2

1、typedef的使用 a.语法 typedef 原名 别名&#xff1b;。 ​ typedef struct student {int num;char name[20];char sex; }stu,*pstu;//stu相当于struct student这个类型&#xff0c;*pstu相当于struct student * 别名的理解方法&#xff1a;若是字母前面有符号&#xff0…

SOUI4里使用字体回退

在新版本的SOUI里render-skia导出了一个新的函数用于字体回退功能。Render_Skia_SetFontFallback 函数原型如下&#xff1a; EXTERN_C void SOUI_COM_API Render_Skia_SetFontFallback(FontFallback fontFallback);因为我的工程是使用动态库&#xff0c;这里可以直接获取到这…

如何用微信小程序实现远程控制4路控制器/断路器

如何用微信小程序实现远程控制4路控制器/断路器呢&#xff1f; 本文描述了使用微信小程序调用HTTP接口&#xff0c;实现控制4路控制器/断路器&#xff0c;支持4路输出&#xff0c;均可独立控制&#xff0c;可接入各种电器。 可选用产品&#xff1a;可根据实际场景需求&#xf…

hydra常见服务爆破命令

简介 hydra 也称九头蛇&#xff0c; 是著名黑客组织thc的一款开源的暴力密码破解工具&#xff0c;可以破解多种密码。 1. 21端口爆破命令 21端口主要用于FTP(File Transfer Protocol&#xff0c;文件传输协议)服务&#xff0c; FTP服务主要是为了在两台计算机之间实现文件的…

代码随想录算法训练营Day38 | 动态规划理论基础、509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯 | Python | 个人记录向

注&#xff1a;Day37休息。 本文目录 动态规划理论基础509. 斐波那契数做题看文章 70. 爬楼梯做题看文章空间复杂度为O(n)版本空间复杂度为O(3)版本 746. 使用最小花费爬楼梯做题看文章 以往忽略的知识点小结个人体会 动态规划理论基础 代码随想录&#xff1a;动态规划理论基…

内容与图像一对多问题解决

场景复现 分析&#xff1a; 其实这是两给表&#xff0c;一个内容表&#xff0c;一个图片表&#xff0c;一对多的关系。 解决思路: 1. 先上传图片拿到图片的List集合ids&#xff0c;返回值是集合的ids&#xff0c;给到前端 2. 再添加内容表的数据生成了id&#xff0c;遍历查…

佳博打印机如何设置打印模式为热敏模式

1、打开电脑搜索框&#xff0c;如下图输入打印机: 2、点击打印机设置&#xff0c;如下图&#xff1a; 3、点击打印机首选项&#xff0c;如下图&#xff1a; 4、点击下图“卷”进行设置 也可对打印机间距高度进行调整

网络流初步(图论学习总结部分内容)

文章目录 前言五、网络流初步最大流&#xff08;Maximum flow&#xff0c;简称 M F MF MF&#xff09; e g 1 : eg1: eg1: [ P 2764 P2764 P2764 最小路径覆盖问题 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)](https://www.luogu.com.cn/problem/P2764) 最小费用最大流&am…