Golang實(shí)現(xiàn)http重定向https
用golang來(lái)實(shí)現(xiàn)的webserver通常是是這樣的
//main.go package main import ( "fmt" "io" "net/http" ) func defaultHandler(w http.ResponseWriter, r *http.Request) { io.WriteString(w, "<h1>Golang HTTP</h1>") } func main() { mux := http.NewServeMux() mux.HandleFunc("/", defaultHandler) err := http.ListenAndServe(":80", mux) if err != nil { fmt.Println(err.Error()) } }
服務(wù)運(yùn)行后,我們通常通過(guò)http://localhost
的形式來(lái)訪問(wèn),
而我們要實(shí)現(xiàn)的是通過(guò)https://localhost
的形式來(lái)訪問(wèn).
那么如何用golang來(lái)實(shí)現(xiàn)HTTPS呢?
//main.go package main import ( "fmt" "io" "net/http" ) func defaultHandler(w http.ResponseWriter, r *http.Request) { io.WriteString(w, "<h1>Golang HTTPS</h1>") } func main() { mux := http.NewServeMux() mux.HandleFunc("/", defaultHandler) certFile := "/etc/letsencrypt/live/www.taadis.com/cert.pem" keyFile := "/etc/letsencrypt/live/www.taadis.com/privkey.pem" err := http.ListenAndServeTLS(":443", certFile, keyFile, mux) if err != nil { fmt.Println(err.Error()) } }
源碼比較簡(jiǎn)單,主要是把http.ListenAndServe()
替換成ListenAndServeTLS()
。其次注意下端口號(hào)的區(qū)別,還有就是CA證書的問(wèn)題,這里我采用了Let's Encrypt。
到此這篇關(guān)于Golang實(shí)現(xiàn)http重定向https的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
golang文件內(nèi)容覆蓋問(wèn)題的分析及解決
通過(guò)golang讀取數(shù)據(jù)庫(kù)站點(diǎn)映射配置,生成nginx conf文件,并檢查和重啟nginx服務(wù),已達(dá)到站點(diǎn)自動(dòng)化部署目的,當(dāng)目標(biāo)文件中內(nèi)容很長(zhǎng),而寫入的內(nèi)容很短時(shí),目標(biāo)文件內(nèi)容無(wú)法完全覆蓋,本文給大家介紹了解決方法,需要的朋友可以參考下2024-01-01Golang?中的json.Marshal問(wèn)題總結(jié)(推薦)
這篇文章主要介紹了Golang中的json.Marshal問(wèn)題總結(jié),本文通過(guò)一個(gè)例子給大家詳細(xì)講解,本次提出的問(wèn)題中,我們不難注意到其中的time.Time是一個(gè)匿名(Anonymous)字段,而這個(gè)就是答案的由來(lái),需要的朋友可以參考下2022-06-06GO語(yǔ)言基本數(shù)據(jù)類型總結(jié)
這篇文章主要介紹了GO語(yǔ)言基本數(shù)據(jù)類型,較為詳細(xì)的總結(jié)了GO語(yǔ)言的基本數(shù)據(jù)類型,對(duì)于GO語(yǔ)言的學(xué)習(xí)有一定的借鑒參考價(jià)值,需要的朋友可以參考下2014-12-12Go語(yǔ)言實(shí)現(xiàn)猜數(shù)字小游戲
這篇文章主要為大家詳細(xì)介紹了Go語(yǔ)言實(shí)現(xiàn)猜數(shù)字小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-10-10從并發(fā)到并行解析Go語(yǔ)言中的sync.WaitGroup
Go?語(yǔ)言提供了許多工具和機(jī)制來(lái)實(shí)現(xiàn)并發(fā)編程,其中之一就是?sync.WaitGroup。本文就來(lái)深入討論?sync.WaitGroup,探索其工作原理和在實(shí)際應(yīng)用中的使用方法吧2023-05-05解析Golang和Java的優(yōu)勢(shì)與劣勢(shì)
Golang和Java是兩種流行的編程語(yǔ)言,它們?cè)诤芏喾矫嬗兄嗨浦?但也存在一些重要的區(qū)別,本文將對(duì)Golang和Java進(jìn)行對(duì)比,探討它們的特點(diǎn)和適用場(chǎng)景,需要的朋友可以參考下2023-10-10基于Go語(yǔ)言實(shí)現(xiàn)類似tree命令的小程序
tree?命令是一個(gè)小型的跨平臺(tái)命令行程序,用于遞歸地以樹狀格式列出或顯示目錄的內(nèi)容。本文將通過(guò)Go語(yǔ)言實(shí)現(xiàn)類似tree命令的小程序,需要的可以參考一下2022-10-10golang組件swagger生成接口文檔實(shí)踐示例
這篇文章主要為大家介紹了golang組件swagger生成接口文檔實(shí)踐示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2022-04-04