Guest User
2025-01-07 14:53:14
Useful
package main import ( "net" "log" "net/http" ) var httpAddr ":8080" var httpsAddr ":8443" func main() { srv := http.Server{ Addr: httpsAddr, } _, tlsPort, err := net.SplitHostPort(httpsAddr) if err != nil { return err } go redirectToHTTPS(tlsPort) srv.ListenAndServeTLS("cert.pem", "key.pem") } func redirectToHTTPS(tlsPort string) { httpSrv := http.Server{ Addr: httpAddr, Handler: http.HandlerFunc(func(w http.ResponseWriter, r *http.Request){ var host string if strings.Contains(r.Host, ":") { var err error host, _, err = net.SplitHostPort(r.Host) if err != nil { panic(err) } } else { host = r.Host } u := r.URL u.Host = net.JoinHostPort(host, tlsPort) u.Scheme="https" log.Println(u.String()) http.Redirect(w,r,u.String(), http.StatusMovedPermanently) }), } log.Println(httpSrv.ListenAndServe()) }