GOlang/https:等待客户端前言超时
Posted
技术标签:
【中文标题】GOlang/https:等待客户端前言超时【英文标题】:GOlang/https: timeout waiting for client preface 【发布时间】:2016-10-10 13:43:12 【问题描述】:我使用ListenAndServeTLS
切换了SSL
func main()
serverMux := http.NewServeMux()
serverMux.HandleFunc("/v1/ws1", handler1)
serverMux.HandleFunc("/v1/ws2", handler2)
serverMux.HandleFunc("/v1/ws3", handler3)
serverMux.HandleFunc("/static/", handlerStatic(http.FileServer(http.Dir("/var/project/"))))
go func()
wsSSLServer := &http.Server
Addr: ":443",
Handler: serverMux,
ReadTimeout: 15 * time.Second,
WriteTimeout: 15 * time.Second,
certPath := "/etc/letsencrypt/live/example.com/"
fmt.Println(wsSSLServer.ListenAndServeTLS(certPath+"fullchain.pem", certPath+"privkey.pem"))
()
wsServer := &http.Server
Addr: ":80",
Handler: serverMux,
ReadTimeout: 15 * time.Second,
WriteTimeout: 15 * time.Second,
fmt.Println(wsServer.ListenAndServe())
现在我在日志中发现了很多这样的错误:
http2:服务器:从客户端 x.x.x.x:xxxxx 读取前言时出错: 等待客户端前言超时
这是什么意思?
【问题讨论】:
你的客户端真的发送了 https 请求吗? 是的,目前同时服务于 http 和 https 抱歉 Daniele,我的问题是您的 客户端 是否发送了有效的 http2 请求?服务器等待 10 秒让客户端发送序言然后放弃。 客户端通常是一个移动浏览器,比如安卓版 Chrome,它只是访问 https:// URL 通过 https:// 我实际上是在提供一个由 Go 生成的 html 页面。知道发生了什么吗? 【参考方案1】:我在使用 Firefox 作为客户端时遇到了同样的错误。 重新生成 SSL 密钥/证书解决了问题,我猜证书已过期。
对于本地主机开发:
openssl req -nodes -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days XXX -subj '/CN=localhost'
【讨论】:
以上是关于GOlang/https:等待客户端前言超时的主要内容,如果未能解决你的问题,请参考以下文章
Xdebug: [Step Debug] 连接调试客户端超时,等待:200 ms。试过:本地主机:9003