HTTP服务反向代理时只把HTTP(S)源站加入到状态管理中

This commit is contained in:
GoEdgeLab
2023-06-07 19:28:16 +08:00
parent a4e616a446
commit c256112852

View File

@@ -283,15 +283,19 @@ func (this *HTTPRequest) doOriginRequest(failedOriginIds []int64, failedLnNodeId
// 客户端取消请求,则不提示 // 客户端取消请求,则不提示
httpErr, ok := requestErr.(*url.Error) httpErr, ok := requestErr.(*url.Error)
if !ok { if !ok {
SharedOriginStateManager.Fail(origin, requestHost, this.reverseProxy, func() { if isHTTPOrigin {
this.reverseProxy.ResetScheduling() SharedOriginStateManager.Fail(origin, requestHost, this.reverseProxy, func() {
}) this.reverseProxy.ResetScheduling()
})
}
this.write50x(requestErr, http.StatusBadGateway, "Failed to read origin site", "源站读取失败", true) this.write50x(requestErr, http.StatusBadGateway, "Failed to read origin site", "源站读取失败", true)
remotelogs.WarnServer("HTTP_REQUEST_REVERSE_PROXY", this.RawReq.URL.String()+": Request origin server failed: "+requestErr.Error()) remotelogs.WarnServer("HTTP_REQUEST_REVERSE_PROXY", this.RawReq.URL.String()+": Request origin server failed: "+requestErr.Error())
} else if httpErr.Err != context.Canceled { } else if httpErr.Err != context.Canceled {
SharedOriginStateManager.Fail(origin, requestHost, this.reverseProxy, func() { if isHTTPOrigin {
this.reverseProxy.ResetScheduling() SharedOriginStateManager.Fail(origin, requestHost, this.reverseProxy, func() {
}) this.reverseProxy.ResetScheduling()
})
}
// 是否需要重试 // 是否需要重试
if (originId > 0 || (lnNodeId > 0 && hasMultipleLnNodes)) && !isLastRetry { if (originId > 0 || (lnNodeId > 0 && hasMultipleLnNodes)) && !isLastRetry {
@@ -360,7 +364,7 @@ func (this *HTTPRequest) doOriginRequest(failedOriginIds []int64, failedLnNodeId
this.originStatus = int32(resp.StatusCode) this.originStatus = int32(resp.StatusCode)
// 恢复源站状态 // 恢复源站状态
if !origin.IsOk { if !origin.IsOk && isHTTPOrigin {
SharedOriginStateManager.Success(origin, func() { SharedOriginStateManager.Success(origin, func() {
this.reverseProxy.ResetScheduling() this.reverseProxy.ResetScheduling()
}) })