gin启动https支持

gin,启动,https,支持 · 浏览次数 : 310

小编点评

## Using Gin with HTTPS support This code demonstrates using Gin for an HTTPS server with TLS/SSL certificate validation and secure configuration. **Key Takeaways:** * Gin supports HTTPS through middleware. * Viper configuration file is used to define TLS/SSL settings. * `tlsHandler` handles TLS communication and enforces certificate validation. * `gin.RunTLS` configures HTTPS server with provided port, certificate, and key. **Code Walkthrough:** 1. **Initialization:** * Viper loads configuration file and sets up TLS/SSL settings. * `tlsHandler` is created to handle TLS communication. 2. **Server Configuration:** * `gin.Default` is used to create a new Gin server. * `GET` route is registered to handle HTTP requests. * `tlsHandler` is assigned to the route for handling HTTPS requests. 3. **Running the Server:** * `tlsHandler` ensures SSL/TLS connection establishment. * `gin.RunTLS` configures HTTPS server on specified port. * Server starts listening on the specified port. **Security Considerations:** * The provided code uses a self-signed certificate for demonstration purposes. * This is not recommended for production use as it may present security vulnerabilities. * The certificate should be generated with a valid certificate authority and trusted by the server. **Example Usage:** To run the server, run the following command: ```bash go run main.go ``` **Additional Notes:** * `port` variable in configuration defines the server listening port. * `tls.enable` flag determines whether to enable TLS/SSL encryption. * `tls.cert` and `tls.key` specify path to certificate and key files. **Disclaimer:** This code is provided for educational purposes only. Use it at your own risk and always consider security best practices for production implementations.

正文

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

http服务

https服务

version: '3.3'

port: 18080

tls:
  enable: true 
  cert: ./config/server.pem
  key: ./config/server.key

https

这里的不安全使用使用的证书是一个测试证书


声明:本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)进行许可,使用时请注明出处。
Author: mengbin92
Github: mengbin92
cnblogs: 恋水无意


与gin启动https支持相似的内容:

gin启动https支持

gin是一个使用Go语言开发的Web框架,具有运行速度快,分组的路由器,良好的崩溃捕获和错误处理,支持中间件等。 在工作中有时候需要支持https服务,gin可以通过中间件的方式来提供对https的支持,这里使用的是secure来提供https服务支持。这里给出一个简单的使用示例: 示例代码 pac

摸鱼快报:golang net/http中的雕虫小技

以后会开一个板块,摸鱼快报,快速记录这几周开发中雕虫小技。 1. 向开发环境localhost:3000种植cookie 前端使用Create React App脚手架,默认以localhost:3000端口启动; 后端使用golang-gin框架,使用8034端口启动。 登录模块走的是sso,前后

Gin 框架的执行流程

Gin框架是一个用Go语言编写的高性能Web框架,它基于httprouter实现,具有快速、简洁和高效的特性。 以下是Gin框架处理HTTP请求的大致执行流程: 1 初始化Gin引擎: 用户创建一个新的gin.Engine实例,这通常是应用程序的主路由器。 用户定义路由,这些路由是通过engine.

Gin 框架是怎么使用 net http 包的(gin.go)

Gin 框架是基于 Go 语言的标准库 net/http 构建的,它使用 net/http 提供的基础功能来构建自己的高性能 Web 应用框架。 具体来说,Gin 使用 net/http 的以下方面: 1,HandlerFunc: Gin 使用 net/http 的 HandlerFunc 类型,这

Gin 获取请求参数

1、获取URL?后的参数(不区分请求方式) // 获取请求url ? 后的参数(url:8080/add?name=kelvin) func GetUrlParam(ctx *gin.Context) { name := ctx.Query("name") defaultName := ctx.De

Gin 响应方式

响应 1. 字符串方式 r.GET("/user/save", func(ctx *gin.Context) { ctx.String(http.StatusOK, "this is a %s", "ms string response") }) 2. JSON方式 r.GET("/user/sav

Gin 中间件

中间件 在Gin框架中,中间件(Middleware)指的是可以拦截http请求-响应生命周期的特殊函数,在请求-响应生命周期中可以注册多个中间件,每个中间件执行不同的功能,一个中间执行完再轮到下一个中间件执行。 中间件的常见应用场景如下: 请求限速 api接口签名处理 权限校验 统一错误处理 Gi

Gin中间件开发

Gin是一个用Go语言编写的Web框架,它提供了一种简单的方式来创建HTTP路由和处理HTTP请求。中间件是Gin框架中的一个重要概念,它可以用来处理HTTP请求和响应,或者在处理请求之前和之后执行一些操作。 以下是关于Gin中间件开发的一些基本信息: - **中间件的定义**:在Gin中,中间件是

[golang]在Gin框架中使用JWT鉴权

什么是JWT JWT,全称 JSON Web Token,是一种开放标准(RFC 7519),用于安全地在双方之间传递信息。尤其适用于身份验证和授权场景。JWT 的设计允许信息在各方之间安全地、 compactly(紧凑地)传输,因为其自身包含了所有需要的认证信息,从而减少了需要查询数据库或会话存储

validator库在gin中的使用

目录封装语言包翻译器tag中设置验证规则控制层验curl请求返回结果 封装语言包翻译器 package validator import ( "fmt" "net/http" "reflect" "github.com/go-playground/locales/zh_Hans_CN" unTran