go httpsアクセスを設定し、httpは自動的にhttpsにジャンプします.

3485 ワード

以前にaiサーバーを構築したことがあります. https://blog.csdn.net/daily886/article/details/96118130
今彼の基礎の上でhttpsに修正して、httpは自動的にhttpsにジャンプします.
使用する第三者包装は以下の通りです.
go get github.com/unrolled/secure
ファイルを変更 aichat/router/router.go ,router.goの内容は以下の通りです.
package router

import (
	"net/http"

	"github.com/gin-gonic/gin"
	"github.com/unrolled/secure"
	"github.com/spf13/viper"

	"aichat/service"
	"aichat/router/middleware"
)

//     
func InitRouter(g *gin.Engine){
	middlewares := []gin.HandlerFunc{}
	//   
	g.Use(gin.Recovery())
	g.Use(middleware.NoCache)
	g.Use(middleware.Options)
	g.Use(middleware.Secure)
	g.Use(middlewares...)

	g.Use(TlsHandler())

	//404  
	g.NoRoute(func(c *gin.Context){
		c.String(http.StatusNotFound,"      ")
	})
	//       
	g.GET("/",service.Index)//  
	g.GET("/chat",service.AiChat)//
}

//    ,    https
func TlsHandler() gin.HandlerFunc {
	sslhost := "go.daily886.com:"+viper.GetString("common.server.addr")
	return func(c *gin.Context) {
		secureMiddleware := secure.New(secure.Options{
			SSLRedirect: true,
			SSLHost:     sslhost,
		})
		err := secureMiddleware.Process(c.Writer, c.Request)

		// If there was an error, do not continue.
		if err != nil {
			return
		}

		c.Next()
	}
}
ファイルを変更 aichat/main.go ,メールの内容は以下の通りです.
package main

import (
	"log"

	"github.com/gin-gonic/gin"
	"github.com/spf13/viper"

	"aichat/config"
	"aichat/router"
)

func main() {
	if err := config.Init();err != nil{
		panic(err)
	}
	//  gin  
	gin.SetMode(viper.GetString("common.server.runmode"))

	//    gin  
	g := gin.New()

	router.InitRouter(g)
	log.Printf("         : %s
", viper.GetString("common.server.url")) // Listen and Server in https://127.0.0.1:8080 //err := g.Run(viper.GetString("common.server.addr")) // http err := g.RunTLS( // https viper.GetString("common.server.addr"), "/usr/local/orange/conf/cert/online/go.daily886.com.pem", "/usr/local/orange/conf/cert/online/go.daily886.com.key") if err != nil { log.Fatal(" :", err) } }
包装して実行します
[root@izj6c4jirdug8kh3uo6rdez aichat]# go build
[root@izj6c4jirdug8kh3uo6rdez aichat]# ./aichat
[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
 - using env:	export GIN_MODE=release
 - using code:	gin.SetMode(gin.ReleaseMode)

[GIN-debug] GET    /                         --> aichat/service.Index (6 handlers)
[GIN-debug] GET    /chat                     --> aichat/service.AiChat (6 handlers)
[GIN-debug] Listening and serving HTTPS on :6663
訪問の結果は以下の通りです.
go设置https访问,并http自动跳转https_第1张图片
go设置https访问,并http自动跳转https_第2张图片
参考:https://www.jianshu.com/p/01057d2c37e4