Go-Gin同时启用HTTP和HTTPS

package main

import (
  "github.com/gin-gonic/gin"
  "github.com/unrolled/secure"
  "net/http"
  // "fmt"
)

func main() {
  httpsRouter := gin.Default()
  httpRouter := gin.Default()

  httpsRouter.Use(TlsHandler()) // 处理SSL的中间件

  httpsRouter.StaticFS("/", http.Dir("./static"))
  httpRouter.StaticFS("/", http.Dir("./static"))
  // 这部分根据实际业务逻辑进行修改

  go httpsRouter.RunTLS(":443", "./ssl/ssl.pem", "./ssl/ssl.key")
  // 上面一行三个参数分别是SSL的监听端口,证书以及私钥
  httpRouter.Run(":80")
}


func TlsHandler() gin.HandlerFunc {
  return func(c *gin.Context) {
    secureMiddleware := secure.New(secure.Options{
      SSLRedirect: true,
      SSLHost:	 ":443",
    })
    err := secureMiddleware.Process(c.Writer, c.Request)
    if err != nil {
      return
    }
    c.Next()
  }
}
上一篇
下一篇