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: 恋水无意
gin启动https支持的更多相关文章
- 使用Spring Boot开发Web项目(二)之添加HTTPS支持
		上篇博客使用Spring Boot开发Web项目我们简单介绍了使用如何使用Spring Boot创建一个使用了Thymeleaf模板引擎的Web项目,当然这还远远不够.今天我们再来看看如何给我们的We ... 
- 转自《https安全链接的配置教程:startSSl免费证书申请与nginx的https支持配置》
		一.什么是 SSL 证书,什么是 HTTPS 网站? SSL证书是数字证书的一种,类似于驾驶证.护照和营业执照的电子副本.SSL证书通过在客户端浏览器和Web服务器之间建立一条SSL安全通道(Secu ... 
- WebAPi之SelfHost自创建证书启动Https疑难解惑及无法正确返回结果
		前言 话说又来需求了,之前对于在SelfHost中需要嵌套页面并操作为非正常需求,这回来正常需求了,客户端现在加了https,老大过来说WebAPi访问不了了,这是什么情况,我去试了试,还真是这个情况 ... 
- 解决企业In-House安装APP需HTTPS支持的问题(转载)
		同事写的一篇文章,感觉不错,转过来. 解决企业In-House安装APP需HTTPS支持的问题 问题背景: 能否通过应用服务器发布企业应用: 解决iOS7.1后,发布地址必须为HTTPS服务器. 写作 ... 
- Spring Boot中启动HTTPS
		一,生成https 的证书 1,在相应的根目录下 keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize -keyst ... 
- StartCom 申请 SSL 证书及 Nginx HTTPS 支持配置全攻略
		来源:https://www.williamyao.com/index.php/archives/1397/ 前言 最近收到 StartCom 的邮件,数字证书即将过期,想到去年在 StartSSL ... 
- 5分钟上手:本地开发环境启动HTTPS
		今天我们访问的所有网站几乎都是受HTTPS保护的.如果你的站点还没有,那你应该使用它.使用HTTPS保护服务器也意味着你不能从不是HTTPS服务器向此服务器发送请求.这给使用本地开发环境的开发人员带来 ... 
- web-msg-sender的https支持改造
		用的是nginx代理转发443到2120端口实现,官方说workman原生支持,没有实现(现象是 访问 htttps://域名:2120/ 超时,不知道是服务器问题还是什么) 后转为用nginx代理转 ... 
- 【经验】Rufus制作Win10启动盘支持UEFI:比使用UltraISO(软碟通)制作Win10操作系统U盘启动盘更快捷的工具完整教程-
		ultraiso中文称之为软碟通,是一款功能强大的光盘映像文件制作/编辑/转换工具,通过它,用户可以直接编辑ISO文件和从ISO中提取文件和目录,也可以从CD-ROM制作光盘映像或者将硬盘上的文件制作 ... 
- 使用本地自签名证书为 React 项目启用 https 支持
		简介 现在是大前端的时代,我们在本地开发 React 项目非常方便.这不是本文的重点,今天要分享一个话题是,如何为这些本地的项目,添加 https 的支持.为什么要考虑这个问题呢?主要有几个原因 如果 ... 
随机推荐
- 火山引擎数智平台协助洞察美图类APP新增长,付费用户转化超过 124%
			更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 美图类 APP 的下一个增长点在哪里? 目前,国内市场上的美图类 APP 大多都遵循着基础功能免费使用.个性化热门 ... 
- 24校招,Moka测试开发工程师一面
			前言 大家好,今天回顾一下楼主当时参加moka测试开发工程师的面试 对其中一些重要问题,我也给出了相应的答案 过程 自我介绍 挑一个项目,详细介绍你在其中担任的职责 如何安排工作的,有什么成果? 回归 ... 
- 【辅助工具】IDEA使用
			IDEA使用 快捷键 快捷键 alt+enter:代码错误智能提示 alt+up:上个方法 alt+down:下个方法 alt+1:快速定位到项目窗口,还可边按键盘输文件名查找文件 alt+F7:定位 ... 
- CF:706B. Interesting drink (二分查找)
			题意:不同奶茶店里同样的奶茶价格不同,问在当天Yuki持有的零钱能在几家店购买 思路:对价格数组排序,先优先判断是否会比较最大值和最小值,然后二分查找 #include<bits/stdc++. ... 
- 题解 [HDU 6745] Dec (简单DP)
			来源:2020 年百度之星·程序设计大赛 - 初赛一 错误想法带来错的代码, 为什么一个简单DP题能被我想成复杂的贪心啊?? 初始有 \(a,b\) 两个正整数,每次可以从中选一个大于 1 的数减 1 ... 
- 【每日一题】7.月月查华华的手机 (枚举 or 序列自动机)
			题目链接:Here 题意总结:\(N\) 次查询串 \(B\) 是否是 \(A\) 的子序列. 思路一 个人做法,枚举原字符串的每一位,如果匹配当前字符串的字符则 m++ 直到字符串枚举完毕或者 m ... 
- 在Winform系统开发中,对表格列表中的内容进行分组展示
			在我们开发Winform界面的时候,有时候会遇到需要对一些字段进行一些汇总的管理,如果在列表中能够对表格列表中的内容进行分组展示,将比较符合我们的预期,本篇随笔介绍在Winform开发中如何利用Dev ... 
- 元素scroll系列属性
			scroll翻译过来,就是滚动的,我们使用scroll系列的相关属性可以动态的得到该元素的大小.滚动距离等. scroll系列属性 作用 element.scrollTop 返回被卷上去的上侧距离,返 ... 
- python之十进制、二进制、八进制、十六进制转换
			数字处理的时候偶尔会遇到一些进制的转换,以下提供一些进制转换的方法 一.十进制转化成二进制 使用bin()函数 1 x=10 2 print(bin(x)) 二.十进制转化为八进制 使用oct()函数 ... 
- 如何在Typora中跳转到文本内的指定位置?
			1.问题 网上写的使用HTML锚点,在typora并不适用 如 跳转 你好 2.解决 参考链接 https://segmentfault.com/q/1010000018057010 https:// ... 
