开发中遇到以下问题:
nginx 转发 https请求 到 go web server对应的 http 端口(10010),
例如完整的url请求为 https://www.xxx.com/info?para=value#204
那么go web server如何能得到以上完整的url "https://www.xxx.com/info?para=value#204"
以下是主函数,是否需要重写 ListenAndServe?
func main() {
port := "10010"
println("Web Server Listening on port ", port, "...")
http.HandleFunc("/", defaultHandler)
http.HandleFunc("/info", infoHandler)
http.ListenAndServe(":"+port, nil)
}
又查了下nginx反向代理的资料,可以通过设置 proxy_set_header Scheme $scheme 以及 proxy_set_header Host $host
来设置,然后传递给go web 的10010端口,
go程序可以通过 r.Header.Get("Scheme")获取是 https/http; 通过 r.Header.Get("Host")来获取www.xxxx.com
其他信息可以 r.URL.Fragment r.URL.RequestURI() r.Host等获取,
至于#号以及以后的是作为Single Page Application 的标识(ajax等利用),浏览器是不会发送#后面的相关信息。
#1