资讯动态

Gin 如何配合 autotls 用 Let‘s Encrypt 一行代码上线 HTTPS 服务

发布时间:2026/9/11 2:08:49 来源:尧图企业网站定制
Gin 如何配合 autotls 用 Lets Encrypt 一行代码上线 HTTPS 服务【免费下载链接】ginGin is a high-performance HTTP web framework written in Go. It provides a Martini-like API but with significantly better performance—up to 40 times faster—thanks to httprouter. Gin is designed for building REST APIs, web applications, and microservices.项目地址: https://gitcode.com/GitHub_Trending/gi/gin用 Gin 写好的服务上线时手动申请证书、配置端口、续期都是重复劳动。Gin 官方文档docs/doc.md 的 Support Lets Encrypt 一节给出了一条直接的路径配合github.com/gin-gonic/autotls包用一行autotls.Run让服务以 HTTPS 启动由 Lets Encrypt 自动签发和续期证书如果已有现成证书文件也可以用RunTLS手动挂载。本文给出文档中的两条完整代码路径、运行方式与验证方法。准备条件一个已有的 Gin 项目Go 版本要求以项目 README 为准Gin 要求 Go 的 Go version 说明。在项目的依赖中加入github.com/gin-gonic/autotls如果走自定义 autocert manager 的分支还需要golang.org/x/crypto/acme/autocert。一个已经解析到目标服务器 IP 的域名文档示例中用example1.com、example2.com表示实际代码中替换为你自己的域名。主路径一行代码启动 Lets Encrypt HTTPS把main.go写成下面这样。示例来自 docs/doc.md 的 Support Lets Encrypt 章节注册了一个/ping路由用于验证autotls.Run的域名参数按注释替换为你的域名即可package main import ( log net/http github.com/gin-gonic/autotls github.com/gin-gonic/gin ) func main() { r : gin.Default() // Ping handler r.GET(/ping, func(c *gin.Context) { c.String(http.StatusOK, pong) }) log.Fatal(autotls.Run(r, example1.com, example2.com)) }其中最后一行log.Fatal(autotls.Run(r, example1.com, example2.com))就是标题所说的一行把 Gin engine 交给 autotls按你声明的域名启动 HTTPS 服务如果启动过程返回错误log.Fatal会直接让进程终止避免带错上线。gin.Default()自带 Recovery 与 Logger 中间件适合直接演示和上线。可选分支自定义 autocert manager需要控制证书缓存位置、限制允许的域名时文档给出了第二个示例自己构造autocert.Manager再通过autotls.RunWithManager传入package main import ( log net/http github.com/gin-gonic/autotls github.com/gin-gonic/gin golang.org/x/crypto/acme/autocert ) func main() { r : gin.Default() // Ping handler r.GET(/ping, func(c *gin.Context) { c.String(http.StatusOK, pong) }) m : autocert.Manager{ Prompt: autocert.AcceptTOS, HostPolicy: autocert.HostWhitelist(example1.com, example2.com), Cache: autocert.DirCache(/var/www/.cache), } log.Fatal(autotls.RunWithManager(r, m)) }三个字段的作用对应文档原文Prompt: autocert.AcceptTOS表示自动接受 Lets Encrypt 服务条款HostPolicy: autocert.HostWhitelist(...)限定只为你列出的域名签发证书Cache: autocert.DirCache(/var/www/.cache)把签发的证书缓存到该目录。目录路径/var/www/.cache是文档示例值按你服务器的实际可写位置替换。验证服务是否上线成功文档示例自带的验证方式就是/ping路由服务启动后用浏览器或curl请求https://你的域名/ping返回 HTTP 200 且响应体为pong说明 HTTPS 链路和路由都工作正常。示例中c.String(http.StatusOK, pong)即预期输出。如果请求走的是http://而非https://说明证书链路还没建立应确认服务确实通过autotls.Run/autotls.RunWithManager启动而不是普通的Run。已有证书文件时的替代路径如果不想用 Lets Encrypt 自动签发而是已经持有证书文件和私钥文件Gin 引擎本身提供了RunTLS它是http.ListenAndServeTLS(addr, certFile, keyFile, router)的快捷方式启动后监听并处理 HTTPS 请求见 gin.go。用法即router.RunTLS(:443, cert.pem, key.pem)把certFile、keyFile换成你的证书与私钥路径。与 autotls 方案不同这条路径不自动续期证书到期需要自行替换。边界说明以上两个 autotls 示例都是完整可运行的main函数example1.com、example2.com与/var/www/.cache属于文档占位值替换为你自己的域名与目录后才能直接使用除此之外不需要改写其他部分。Gin 对 Lets Encrypt 的支持自 Gin 1.2.0 起通过gin-gonic/autotls引入见 CHANGELOG.md当前文档示例即针对现行版本。仓库中的 docs/doc.md Server Configuration 章节还覆盖了自定义 HTTP 配置、优雅退出等内容上线前后如有超时、重启需求可继续查阅。【免费下载链接】ginGin is a high-performance HTTP web framework written in Go. It provides a Martini-like API but with significantly better performance—up to 40 times faster—thanks to httprouter. Gin is designed for building REST APIs, web applications, and microservices.项目地址: https://gitcode.com/GitHub_Trending/gi/gin创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价