我的主 Web 服务器中有反向代理,专门用于某个微服务,并处理对其适当的微服务的转发请求。
func newTrimPrefixReverseProxy(target *url.URL, prefix string) *httputil.ReverseProxy {
director := func(req *http.Request) {
// ... trims prefix from request path and prepends the path of the target url
}
return &httputil.ReverseProxy{Director: director}
}
这对于纯 JSON 响应非常有效,但最近我在尝试通过反向代理提供内容(流响应)时遇到了问题。提供内容的方式无关紧要,当直接访问服务而不是通过反向代理访问服务时,(视频)内容将按预期提供。
服务内容:
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
http.ServeContent(w, r, "video.mp4", time.Now().Add(time.Hour*24*365*12*9*-1), videoReadSeeker)
})
同样,videoReadSeeker 和内容的提供方式不是问题,问题是通过反向代理将我的响应按预期转发给请求者;直接访问该服务时,会显示视频,我可以随心所欲地浏览它。
请注意,接收到内容的数据响应(http 状态、标头),但没有接收到响应正文中的内容流。
我如何才能确保反向代理按照内容的预期处理流式响应?
九州编程
相关分类