脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Golang - Golang实现http重定向https

Golang实现http重定向https

2022-07-13 20:00taadis Golang

这篇文章介绍了Golang实现http重定向https的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

用golang来实现的webserver通常是是这样的

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//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())
    }
}

服务运行后,我们通常通过http://localhost的形式来访问,
而我们要实现的是通过https://localhost的形式来访问.

那么如何用golang来实现HTTPS呢?

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//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())
    }
}

源码比较简单,主要是把http.ListenAndServe()替换成ListenAndServeTLS()。其次注意下端口号的区别,还有就是CA证书的问题,这里我采用了Let's Encrypt。

到此这篇关于Golang实现http重定向https的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:https://www.cnblogs.com/taadis/p/12126228.html

延伸 · 阅读

精彩推荐
  • GolangGolang实现Directional Channel(定向通道)

    Golang实现Directional Channel(定向通道)

    这篇文章主要介绍了Golang实现Directional Channel(定向通道),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友...

    L1ng147202021-03-28
  • GolangGo 源码里的这些 //go: 指令,你知道吗?

    Go 源码里的这些 //go: 指令,你知道吗?

    如果你平时有翻看源码的习惯,你肯定会发现。咦,怎么有的方法上面总是写着 //go: 这类指令呢。他们到底是干嘛用的?...

    脑子进煎鱼了9962021-11-10
  • Golanggolang之数据验证validator的实现

    golang之数据验证validator的实现

    这篇文章主要介绍了golang之数据验证validator的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下...

    无风的雨4342021-01-30
  • GolangGo语言map字典用法实例分析

    Go语言map字典用法实例分析

    这篇文章主要介绍了Go语言map字典用法,实例分析了map字典的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下 ...

    秋风秋雨6002020-04-19
  • Golanggo语言的初始化顺序,包,变量,init详解

    go语言的初始化顺序,包,变量,init详解

    这篇文章主要介绍了go语言的初始化顺序,包,变量,init详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    灵山行者9212021-03-07
  • GolangGo语言Elasticsearch数据清理工具思路详解

    Go语言Elasticsearch数据清理工具思路详解

    这篇文章主要介绍了Go语言Elasticsearch数据清理工具思路详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参...

    July_whj11512021-11-19
  • GolangGolang多线程刷票的实现代码

    Golang多线程刷票的实现代码

    这篇文章主要介绍了Golang多线程刷票的相关资料,这里实现刷票的功能,对于投票,刷票的很方便,并附实现代码,需要的朋友可以参考下 ...

    lqh2812020-05-08
  • GolangGO语言实现简单的目录复制功能

    GO语言实现简单的目录复制功能

    这篇文章主要介绍了GO语言实现简单的目录复制功能,通过新建及复制内容等操作最终实现复制目录的功能效果,具有一定的参考借鉴价值,需要的朋友可以参...

    shichen20145232020-04-11