時間:2023-02-09 08:48:01 | 來源:建站知識
時間:2023-02-09 08:48:01 來源:建站知識
設(shè)置https訪問:func main() { server := &http.Server{ Addr: ":8080", ... } go func() { if err := server.ListenAndServe(); err != nil && err != http.ErrServerClosed { log.Fatalf(err, "Listen: %s/n") } }() ...}
變?yōu)閔ttps監(jiān)聽:func main() { server := &http.Server{ Addr: ":8080", ... } go func() { if err := server.ListenAndServeTLS("conf/server.crt", "conf/server.key"); err != nil && err != http.ErrServerClosed { log.Fatalf(err, "Listen: %s/n") } }() ...}
其中ListenAndServeTLS方法的兩個參數(shù)為SSL證書的下載文件,網(wǎng)上有專門生成證書的命令或工具,這種情況得到的證書,雖然可以訪問https,但證書無效,瀏覽器地址欄提示不安全。go get github.com/unrolled/secure
利用secure包寫一個中間件,設(shè)置http重定向到https具體哪個url上://設(shè)置http重定向到httpsfunc TlsHandler() gin.HandlerFunc { return func(c *gin.Context) { secureMiddleware := secure.New(secure.Options{ SSLRedirect: true, SSLHost: "dubinyang.xyz:8081", }) err := secureMiddleware.Process(c.Writer, c.Request) if err != nil { return } c.Next() }}
main函數(shù)里同時監(jiān)聽http和https:func main() { g:= gin.Default() //加載中間件 g.Use(TlsHandler()) server := &http.Server{ Addr: ":8080", ... } //監(jiān)聽http go func() { if err := server.ListenAndServe(); err != nil && err != http.ErrServerClosed { log.Fatalf(err, "Listen: %s/n") } }() //監(jiān)聽https go func() { //端口不可重復(fù)監(jiān)聽 //此處更換8080端口為8081,直接用gin的RunTLS()函數(shù)進(jìn)行監(jiān)聽 //繼續(xù)用server的ListenAndServeTLS()函數(shù)效果一樣,建server2,Addr變?yōu)闉?#34;:8081"即可 if err := g.RunTLS(":8081", "conf/server.crt", "conf/server.key"); err != nil && err != http.ErrServerClosed { log.Fatalf(err, "Listen: %s/n") } }() ...}
如果http監(jiān)聽80端口,https監(jiān)聽443端口,兩個端口都可隱藏,重定向時地址欄不會顯示端口變化。關(guān)鍵詞:設(shè)置,訪問
客戶&案例
微信公眾號
版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。