Beego如何支持HTTPS
How to support HTTPS in Beego
我想让我的beego网站支持https。
还有一个post。我尝试使用该方法启用 chrome 设置 chrome://flags/#allow-insecure-localhost 或使用 Microsoft Edge 打开 url。仍然显示无法访问此站点。
环境
- go版本go1.10windows/amd64
- 蜜蜂:1.10.1
我的步骤是:
- 安装 googleapis.cer 到我的 windows 10 电脑。
- 将googleapis.cer和googleapis.keyfile复制到
D:\Go_workspace\src\myproject
编辑D:\Go_workspace\src\myproject\conf\app.conf
appname = myproject
runmode = prod
[dev]
httpaddr = "127.0.0.1"
HTTPPort = 9100
[prod]
httpaddr = "127.0.0.1"
HTTPSPort = 9099
httpsaddr = "127.0.0.1"
EnableHTTPS = true
EnableHttpTLS = true
HTTPSCertFile = "googleapis.cer"
HTTPSKeyFile = "googleapis.key"
[test]
HTTPSPort = 9099
运行我用蜜蜂工具命令的项目.....\bin\bee运行
当我去URL https://127.0.0.1:9099 时收到以下消息并显示消息无法访问此站点 :
2018/11/09 10:07:56.251 [I] [asm_amd64.s:2361] http server Running on http://127.0.0.1:8080
2018/11/09 10:07:56.253 [I] [asm_amd64.s:2361] https server Running on https://127.0.0.1:9099
2018/11/09 10:07:56.293 [C] [asm_amd64.s:2361] ListenAndServeTLS: listen tcp 127.0.0.1:9099: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.
有谁知道如何解决这个问题?谢谢
beego
中可能存在竞争条件,这使得 运行 HTTP 和 HTTPS 之间断断续续。你可以在 app.go
中看到这个
if BConfig.Listen.EnableHTTPS || BConfig.Listen.EnableMutualHTTPS {
go func() {
//...
app.Server.Addr = // the Addr is set to the value of HTTPS addr
// ListenAndServeTLS()
}()
}
if BConfig.Listen.EnableHTTP {
go func() {
app.Server.Addr = addr // the Addr is set to the valu of HTTP addr
// ListenAndServe()
}()
}
如您所见,Server.Addr
设置在不同的 goroutine 上,这是一场数据竞争。
所以我建议您 运行 您的应用程序只使用 HTTPS,除非您想修补 beego
本身。
例如在你的 app.conf:
EnableHTTP = false
EnableHTTPS = true
我想让我的beego网站支持https。
还有一个post
环境
- go版本go1.10windows/amd64
- 蜜蜂:1.10.1
我的步骤是:
- 安装 googleapis.cer 到我的 windows 10 电脑。
- 将googleapis.cer和googleapis.keyfile复制到
D:\Go_workspace\src\myproject
编辑
D:\Go_workspace\src\myproject\conf\app.conf
appname = myproject runmode = prod [dev] httpaddr = "127.0.0.1" HTTPPort = 9100 [prod] httpaddr = "127.0.0.1" HTTPSPort = 9099 httpsaddr = "127.0.0.1" EnableHTTPS = true EnableHttpTLS = true HTTPSCertFile = "googleapis.cer" HTTPSKeyFile = "googleapis.key" [test] HTTPSPort = 9099
运行我用蜜蜂工具命令的项目.....\bin\bee运行
当我去URL https://127.0.0.1:9099 时收到以下消息并显示消息无法访问此站点 :
2018/11/09 10:07:56.251 [I] [asm_amd64.s:2361] http server Running on http://127.0.0.1:8080
2018/11/09 10:07:56.253 [I] [asm_amd64.s:2361] https server Running on https://127.0.0.1:9099
2018/11/09 10:07:56.293 [C] [asm_amd64.s:2361] ListenAndServeTLS: listen tcp 127.0.0.1:9099: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.
有谁知道如何解决这个问题?谢谢
beego
中可能存在竞争条件,这使得 运行 HTTP 和 HTTPS 之间断断续续。你可以在 app.go
if BConfig.Listen.EnableHTTPS || BConfig.Listen.EnableMutualHTTPS {
go func() {
//...
app.Server.Addr = // the Addr is set to the value of HTTPS addr
// ListenAndServeTLS()
}()
}
if BConfig.Listen.EnableHTTP {
go func() {
app.Server.Addr = addr // the Addr is set to the valu of HTTP addr
// ListenAndServe()
}()
}
如您所见,Server.Addr
设置在不同的 goroutine 上,这是一场数据竞争。
所以我建议您 运行 您的应用程序只使用 HTTPS,除非您想修补 beego
本身。
例如在你的 app.conf:
EnableHTTP = false
EnableHTTPS = true