gin启动https支持
gin是一个使用Go语言开发的Web框架,具有运行速度快,分组的路由器,良好的崩溃捕获和错误处理,支持中间件等。
在工作中有时候需要支持https服务,gin可以通过中间件的方式来提供对https的支持,这里使用的是secure来提供https服务支持。这里给出一个简单的使用示例:
示例代码
package main import ( "fmt" "net/http" "github.com/gin-gonic/gin" "github.com/spf13/viper" "github.com/unrolled/secure" ) func init() { viper.SetConfigFile("./config/config.yaml") if err := viper.ReadInConfig(); err != nil { panic(err.Error()) } } func main() { engine := gin.Default() engine.GET("/test", func(ctx *gin.Context) { ctx.String(http.StatusOK, "this is a https test") }) if viper.GetBool("tls.enable") { engine.Use(tlsHandler(viper.GetString("port"))) engine.RunTLS(":"+viper.GetString("port"), viper.GetString("tls.cert"), viper.GetString("tls.key")) } else { engine.Run(":" + viper.GetString("port")) } } func tlsHandler(port string) gin.HandlerFunc { return func(ctx *gin.Context) { tlsMiddleward := secure.New(secure.Options{ SSLRedirect: true, SSLHost: ":" + port, }) if err := tlsMiddleward.Process(ctx.Writer, ctx.Request); err != nil { fmt.Printf("tlsHandler error: %s",err.Error()) return } ctx.Next() } }
结果示例
http服务
配置:
version: '3.3' port: 18080 tls: enable: false cert: ./config/server.pem key: ./config/server.key
https服务
version: '3.3' port: 18080 tls: enable: true cert: ./config/server.pem key: ./config/server.key
这里的不安全使用使用的证书是一个测试证书
声明:本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)进行许可,使用时请注明出处。
Author: mengbin92
Github: mengbin92
cnblogs: 恋水无意
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步