小编典典

如何在Go中从http重写/重定向到https?

go

我已经设置了TLS,它可以工作。我知道如何在nginx中从http重写为https,但是我不再使用nginx。我不知道如何在Go中正确执行此操作。

func main() {

    certificate := "/srv/ssl/ssl-bundle.crt"
    privateKey := "/srv/ssl/mykey.key"

    http.HandleFunc("/", rootHander)
    // log.Fatal(http.ListenAndServe(":80", nil))
    log.Fatal(http.ListenAndServeTLS(":443", certificate, privateKey, nil))
}

func rootHander(w http.ResponseWriter, r *http.Request) {
    w.Write([]byte("To the moon!"))
}

我将如何以一种好的方式做到这一点?


阅读 251

收藏
2020-07-02

共1个答案

小编典典

创建一个处理程序,以处理重定向到https的操作,例如:

func redirectTLS(w http.ResponseWriter, r *http.Request) {
    http.Redirect(w, r, "https://IPAddr:443"+r.RequestURI, http.StatusMovedPermanently)
}

然后重定向http流量:

go func() {
    if err := http.ListenAndServe(":80", http.HandlerFunc(redirectTLS)); err != nil {
        log.Fatalf("ListenAndServe error: %v", err)
    }
}()
2020-07-02