反向代理增加是否重试50X选项,默认为启用

This commit is contained in:
刘祥超
2023-08-20 15:49:09 +08:00
parent ddbdb64fc4
commit a24fce2c22
17 changed files with 48 additions and 35 deletions

View File

@@ -42,7 +42,7 @@ func (this *IndexAction) RunGet(params struct {
} }
this.Data["reverseProxyRef"] = reverseProxyRef this.Data["reverseProxyRef"] = reverseProxyRef
var reverseProxy = &serverconfigs.ReverseProxyConfig{} var reverseProxy = serverconfigs.NewReverseProxyConfig()
err = json.Unmarshal(reverseProxyResp.ReverseProxyJSON, reverseProxy) err = json.Unmarshal(reverseProxyResp.ReverseProxyJSON, reverseProxy)
if err != nil { if err != nil {
this.ErrorPage(err) this.ErrorPage(err)

View File

@@ -34,7 +34,7 @@ func (this *SchedulingAction) RunGet(params struct {
this.ErrorPage(err) this.ErrorPage(err)
return return
} }
reverseProxy := &serverconfigs.ReverseProxyConfig{} reverseProxy := serverconfigs.NewReverseProxyConfig()
err = json.Unmarshal(reverseProxyResp.ReverseProxyJSON, reverseProxy) err = json.Unmarshal(reverseProxyResp.ReverseProxyJSON, reverseProxy)
if err != nil { if err != nil {
this.ErrorPage(err) this.ErrorPage(err)

View File

@@ -36,14 +36,14 @@ func (this *SettingAction) RunGet(params struct {
this.ErrorPage(err) this.ErrorPage(err)
return return
} }
reverseProxyRef := &serverconfigs.ReverseProxyRef{} var reverseProxyRef = &serverconfigs.ReverseProxyRef{}
err = json.Unmarshal(reverseProxyResp.ReverseProxyRefJSON, reverseProxyRef) err = json.Unmarshal(reverseProxyResp.ReverseProxyRefJSON, reverseProxyRef)
if err != nil { if err != nil {
this.ErrorPage(err) this.ErrorPage(err)
return return
} }
reverseProxy := &serverconfigs.ReverseProxyConfig{} var reverseProxy = serverconfigs.NewReverseProxyConfig()
err = json.Unmarshal(reverseProxyResp.ReverseProxyJSON, reverseProxy) err = json.Unmarshal(reverseProxyResp.ReverseProxyJSON, reverseProxy)
if err != nil { if err != nil {
this.ErrorPage(err) this.ErrorPage(err)
@@ -67,7 +67,7 @@ func (this *SettingAction) RunPost(params struct {
// TODO 校验配置 // TODO 校验配置
var reverseProxyConfig = &serverconfigs.ReverseProxyConfig{} var reverseProxyConfig = serverconfigs.NewReverseProxyConfig()
err := json.Unmarshal(params.ReverseProxyJSON, reverseProxyConfig) err := json.Unmarshal(params.ReverseProxyJSON, reverseProxyConfig)
if err != nil { if err != nil {
this.ErrorPage(err) this.ErrorPage(err)
@@ -110,6 +110,7 @@ func (this *SettingAction) RunPost(params struct {
AddHeaders: reverseProxyConfig.AddHeaders, AddHeaders: reverseProxyConfig.AddHeaders,
FollowRedirects: reverseProxyConfig.FollowRedirects, FollowRedirects: reverseProxyConfig.FollowRedirects,
ProxyProtocolJSON: proxyProtocolJSON, ProxyProtocolJSON: proxyProtocolJSON,
Retry50X: reverseProxyConfig.Retry50X,
}) })
if err != nil { if err != nil {
this.ErrorPage(err) this.ErrorPage(err)

View File

@@ -42,7 +42,7 @@ func (this *IndexAction) RunGet(params struct {
} }
this.Data["reverseProxyRef"] = reverseProxyRef this.Data["reverseProxyRef"] = reverseProxyRef
var reverseProxy = &serverconfigs.ReverseProxyConfig{} var reverseProxy = serverconfigs.NewReverseProxyConfig()
err = json.Unmarshal(reverseProxyResp.ReverseProxyJSON, reverseProxy) err = json.Unmarshal(reverseProxyResp.ReverseProxyJSON, reverseProxy)
if err != nil { if err != nil {
this.ErrorPage(err) this.ErrorPage(err)

View File

@@ -34,7 +34,7 @@ func (this *SchedulingAction) RunGet(params struct {
this.ErrorPage(err) this.ErrorPage(err)
return return
} }
reverseProxy := &serverconfigs.ReverseProxyConfig{} var reverseProxy = serverconfigs.NewReverseProxyConfig()
err = json.Unmarshal(reverseProxyResp.ReverseProxyJSON, reverseProxy) err = json.Unmarshal(reverseProxyResp.ReverseProxyJSON, reverseProxy)
if err != nil { if err != nil {
this.ErrorPage(err) this.ErrorPage(err)
@@ -42,8 +42,8 @@ func (this *SchedulingAction) RunGet(params struct {
} }
this.Data["reverseProxyId"] = reverseProxy.Id this.Data["reverseProxyId"] = reverseProxy.Id
schedulingCode := reverseProxy.FindSchedulingConfig().Code var schedulingCode = reverseProxy.FindSchedulingConfig().Code
schedulingMap := schedulingconfigs.FindSchedulingType(schedulingCode) var schedulingMap = schedulingconfigs.FindSchedulingType(schedulingCode)
if schedulingMap == nil { if schedulingMap == nil {
this.ErrorPage(errors.New("invalid scheduling code '" + schedulingCode + "'")) this.ErrorPage(errors.New("invalid scheduling code '" + schedulingCode + "'"))
return return

View File

@@ -36,14 +36,14 @@ func (this *SettingAction) RunGet(params struct {
this.ErrorPage(err) this.ErrorPage(err)
return return
} }
reverseProxyRef := &serverconfigs.ReverseProxyRef{} var reverseProxyRef = &serverconfigs.ReverseProxyRef{}
err = json.Unmarshal(reverseProxyResp.ReverseProxyRefJSON, reverseProxyRef) err = json.Unmarshal(reverseProxyResp.ReverseProxyRefJSON, reverseProxyRef)
if err != nil { if err != nil {
this.ErrorPage(err) this.ErrorPage(err)
return return
} }
reverseProxy := &serverconfigs.ReverseProxyConfig{} var reverseProxy = serverconfigs.NewReverseProxyConfig()
err = json.Unmarshal(reverseProxyResp.ReverseProxyJSON, reverseProxy) err = json.Unmarshal(reverseProxyResp.ReverseProxyJSON, reverseProxy)
if err != nil { if err != nil {
this.ErrorPage(err) this.ErrorPage(err)
@@ -67,7 +67,7 @@ func (this *SettingAction) RunPost(params struct {
// TODO 校验配置 // TODO 校验配置
var reverseProxyConfig = &serverconfigs.ReverseProxyConfig{} var reverseProxyConfig = serverconfigs.NewReverseProxyConfig()
err := json.Unmarshal(params.ReverseProxyJSON, reverseProxyConfig) err := json.Unmarshal(params.ReverseProxyJSON, reverseProxyConfig)
if err != nil { if err != nil {
this.ErrorPage(err) this.ErrorPage(err)
@@ -110,6 +110,7 @@ func (this *SettingAction) RunPost(params struct {
AddHeaders: reverseProxyConfig.AddHeaders, AddHeaders: reverseProxyConfig.AddHeaders,
FollowRedirects: reverseProxyConfig.FollowRedirects, FollowRedirects: reverseProxyConfig.FollowRedirects,
ProxyProtocolJSON: proxyProtocolJSON, ProxyProtocolJSON: proxyProtocolJSON,
Retry50X: reverseProxyConfig.Retry50X,
}) })
if err != nil { if err != nil {
this.ErrorPage(err) this.ErrorPage(err)

View File

@@ -42,7 +42,7 @@ func (this *IndexAction) RunGet(params struct {
} }
this.Data["reverseProxyRef"] = reverseProxyRef this.Data["reverseProxyRef"] = reverseProxyRef
var reverseProxy = &serverconfigs.ReverseProxyConfig{} var reverseProxy = serverconfigs.NewReverseProxyConfig()
err = json.Unmarshal(reverseProxyResp.ReverseProxyJSON, reverseProxy) err = json.Unmarshal(reverseProxyResp.ReverseProxyJSON, reverseProxy)
if err != nil { if err != nil {
this.ErrorPage(err) this.ErrorPage(err)

View File

@@ -34,7 +34,7 @@ func (this *SchedulingAction) RunGet(params struct {
this.ErrorPage(err) this.ErrorPage(err)
return return
} }
reverseProxy := &serverconfigs.ReverseProxyConfig{} var reverseProxy = serverconfigs.NewReverseProxyConfig()
err = json.Unmarshal(reverseProxyResp.ReverseProxyJSON, reverseProxy) err = json.Unmarshal(reverseProxyResp.ReverseProxyJSON, reverseProxy)
if err != nil { if err != nil {
this.ErrorPage(err) this.ErrorPage(err)

View File

@@ -43,7 +43,7 @@ func (this *SettingAction) RunGet(params struct {
return return
} }
reverseProxy := &serverconfigs.ReverseProxyConfig{} var reverseProxy = serverconfigs.NewReverseProxyConfig()
err = json.Unmarshal(reverseProxyResp.ReverseProxyJSON, reverseProxy) err = json.Unmarshal(reverseProxyResp.ReverseProxyJSON, reverseProxy)
if err != nil { if err != nil {
this.ErrorPage(err) this.ErrorPage(err)
@@ -67,7 +67,7 @@ func (this *SettingAction) RunPost(params struct {
// TODO 校验配置 // TODO 校验配置
reverseProxyConfig := &serverconfigs.ReverseProxyConfig{} var reverseProxyConfig = serverconfigs.NewReverseProxyConfig()
err := json.Unmarshal(params.ReverseProxyJSON, reverseProxyConfig) err := json.Unmarshal(params.ReverseProxyJSON, reverseProxyConfig)
if err != nil { if err != nil {
this.ErrorPage(err) this.ErrorPage(err)

View File

@@ -41,7 +41,7 @@ func (this *IndexAction) RunGet(params struct {
} }
this.Data["reverseProxyRef"] = reverseProxyRef this.Data["reverseProxyRef"] = reverseProxyRef
var reverseProxy = &serverconfigs.ReverseProxyConfig{} var reverseProxy = serverconfigs.NewReverseProxyConfig()
err = json.Unmarshal(reverseProxyResp.ReverseProxyJSON, reverseProxy) err = json.Unmarshal(reverseProxyResp.ReverseProxyJSON, reverseProxy)
if err != nil { if err != nil {
this.ErrorPage(err) this.ErrorPage(err)

View File

@@ -18,7 +18,7 @@ func (this *SchedulingAction) Init() {
} }
func (this *SchedulingAction) RunGet(params struct { func (this *SchedulingAction) RunGet(params struct {
ServerId int64 ServerId int64
LocationId int64 LocationId int64
}) { }) {
reverseProxyResp, err := this.RPC().HTTPLocationRPC().FindAndInitHTTPLocationReverseProxyConfig(this.AdminContext(), &pb.FindAndInitHTTPLocationReverseProxyConfigRequest{LocationId: params.LocationId}) reverseProxyResp, err := this.RPC().HTTPLocationRPC().FindAndInitHTTPLocationReverseProxyConfig(this.AdminContext(), &pb.FindAndInitHTTPLocationReverseProxyConfigRequest{LocationId: params.LocationId})
@@ -26,7 +26,7 @@ func (this *SchedulingAction) RunGet(params struct {
this.ErrorPage(err) this.ErrorPage(err)
return return
} }
reverseProxy := &serverconfigs.ReverseProxyConfig{} var reverseProxy = serverconfigs.NewReverseProxyConfig()
err = json.Unmarshal(reverseProxyResp.ReverseProxyJSON, reverseProxy) err = json.Unmarshal(reverseProxyResp.ReverseProxyJSON, reverseProxy)
if err != nil { if err != nil {
this.ErrorPage(err) this.ErrorPage(err)
@@ -34,8 +34,8 @@ func (this *SchedulingAction) RunGet(params struct {
} }
this.Data["reverseProxyId"] = reverseProxy.Id this.Data["reverseProxyId"] = reverseProxy.Id
schedulingCode := reverseProxy.FindSchedulingConfig().Code var schedulingCode = reverseProxy.FindSchedulingConfig().Code
schedulingMap := schedulingconfigs.FindSchedulingType(schedulingCode) var schedulingMap = schedulingconfigs.FindSchedulingType(schedulingCode)
if schedulingMap == nil { if schedulingMap == nil {
this.ErrorPage(errors.New("invalid scheduling code '" + schedulingCode + "'")) this.ErrorPage(errors.New("invalid scheduling code '" + schedulingCode + "'"))
return return

View File

@@ -34,7 +34,7 @@ func (this *SettingAction) RunGet(params struct {
return return
} }
reverseProxy := &serverconfigs.ReverseProxyConfig{} var reverseProxy = serverconfigs.NewReverseProxyConfig()
err = json.Unmarshal(reverseProxyResp.ReverseProxyJSON, reverseProxy) err = json.Unmarshal(reverseProxyResp.ReverseProxyJSON, reverseProxy)
if err != nil { if err != nil {
this.ErrorPage(err) this.ErrorPage(err)
@@ -58,7 +58,7 @@ func (this *SettingAction) RunPost(params struct {
// TODO 校验配置 // TODO 校验配置
var reverseProxyConfig = &serverconfigs.ReverseProxyConfig{} var reverseProxyConfig = serverconfigs.NewReverseProxyConfig()
err := json.Unmarshal(params.ReverseProxyJSON, reverseProxyConfig) err := json.Unmarshal(params.ReverseProxyJSON, reverseProxyConfig)
if err != nil { if err != nil {
this.ErrorPage(err) this.ErrorPage(err)
@@ -101,6 +101,7 @@ func (this *SettingAction) RunPost(params struct {
AddHeaders: reverseProxyConfig.AddHeaders, AddHeaders: reverseProxyConfig.AddHeaders,
FollowRedirects: reverseProxyConfig.FollowRedirects, FollowRedirects: reverseProxyConfig.FollowRedirects,
ProxyProtocolJSON: proxyProtocolJSON, ProxyProtocolJSON: proxyProtocolJSON,
Retry50X: reverseProxyConfig.Retry50X,
}) })
if err != nil { if err != nil {
this.ErrorPage(err) this.ErrorPage(err)

View File

@@ -68,7 +68,7 @@ func (this *IndexAction) RunGet(params struct {
} }
this.Data["reverseProxyRef"] = reverseProxyRef this.Data["reverseProxyRef"] = reverseProxyRef
var reverseProxy = &serverconfigs.ReverseProxyConfig{} var reverseProxy = serverconfigs.NewReverseProxyConfig()
err = json.Unmarshal(reverseProxyResp.ReverseProxyJSON, reverseProxy) err = json.Unmarshal(reverseProxyResp.ReverseProxyJSON, reverseProxy)
if err != nil { if err != nil {
this.ErrorPage(err) this.ErrorPage(err)

View File

@@ -25,7 +25,7 @@ func (this *SchedulingAction) RunGet(params struct {
this.ErrorPage(err) this.ErrorPage(err)
return return
} }
reverseProxy := &serverconfigs.ReverseProxyConfig{} var reverseProxy = serverconfigs.NewReverseProxyConfig()
err = json.Unmarshal(reverseProxyResp.ReverseProxyJSON, reverseProxy) err = json.Unmarshal(reverseProxyResp.ReverseProxyJSON, reverseProxy)
if err != nil { if err != nil {
this.ErrorPage(err) this.ErrorPage(err)

View File

@@ -28,14 +28,14 @@ func (this *SettingAction) RunGet(params struct {
this.ErrorPage(err) this.ErrorPage(err)
return return
} }
reverseProxyRef := &serverconfigs.ReverseProxyRef{} var reverseProxyRef = &serverconfigs.ReverseProxyRef{}
err = json.Unmarshal(reverseProxyResp.ReverseProxyRefJSON, reverseProxyRef) err = json.Unmarshal(reverseProxyResp.ReverseProxyRefJSON, reverseProxyRef)
if err != nil { if err != nil {
this.ErrorPage(err) this.ErrorPage(err)
return return
} }
reverseProxy := &serverconfigs.ReverseProxyConfig{} var reverseProxy = serverconfigs.NewReverseProxyConfig()
err = json.Unmarshal(reverseProxyResp.ReverseProxyJSON, reverseProxy) err = json.Unmarshal(reverseProxyResp.ReverseProxyJSON, reverseProxy)
if err != nil { if err != nil {
this.ErrorPage(err) this.ErrorPage(err)
@@ -57,7 +57,7 @@ func (this *SettingAction) RunPost(params struct {
}) { }) {
defer this.CreateLogInfo(codes.ServerReverseProxy_LogUpdateServerReverseProxySettings, params.ServerId) defer this.CreateLogInfo(codes.ServerReverseProxy_LogUpdateServerReverseProxySettings, params.ServerId)
var reverseProxyConfig = &serverconfigs.ReverseProxyConfig{} var reverseProxyConfig = serverconfigs.NewReverseProxyConfig()
err := json.Unmarshal(params.ReverseProxyJSON, reverseProxyConfig) err := json.Unmarshal(params.ReverseProxyJSON, reverseProxyConfig)
if err != nil { if err != nil {
this.ErrorPage(err) this.ErrorPage(err)
@@ -133,6 +133,7 @@ func (this *SettingAction) RunPost(params struct {
ProxyProtocolJSON: proxyProtocolJSON, ProxyProtocolJSON: proxyProtocolJSON,
FollowRedirects: reverseProxyConfig.FollowRedirects, FollowRedirects: reverseProxyConfig.FollowRedirects,
RequestHostExcludingPort: reverseProxyConfig.RequestHostExcludingPort, RequestHostExcludingPort: reverseProxyConfig.RequestHostExcludingPort,
Retry50X: reverseProxyConfig.Retry50X,
}) })
if err != nil { if err != nil {
this.ErrorPage(err) this.ErrorPage(err)

View File

@@ -43,7 +43,7 @@ func (this *UpdateSchedulingPopupAction) RunGet(params struct {
} }
configData := reverseProxyResp.ReverseProxyJSON configData := reverseProxyResp.ReverseProxyJSON
reverseProxyConfig := &serverconfigs.ReverseProxyConfig{} var reverseProxyConfig = serverconfigs.NewReverseProxyConfig()
err = json.Unmarshal(configData, reverseProxyConfig) err = json.Unmarshal(configData, reverseProxyConfig)
if err != nil { if err != nil {
this.ErrorPage(err) this.ErrorPage(err)
@@ -126,8 +126,8 @@ func (this *UpdateSchedulingPopupAction) RunPost(params struct {
this.ErrorPage(err) this.ErrorPage(err)
return return
} }
configData := reverseProxyResp.ReverseProxyJSON var configData = reverseProxyResp.ReverseProxyJSON
reverseProxy := &serverconfigs.ReverseProxyConfig{} var reverseProxy = serverconfigs.NewReverseProxyConfig()
err = json.Unmarshal(configData, reverseProxy) err = json.Unmarshal(configData, reverseProxy)
if err != nil { if err != nil {
this.ErrorPage(err) this.ErrorPage(err)

View File

@@ -25,7 +25,8 @@ Vue.component("reverse-proxy-box", {
idleTimeout: {count: 0, unit: "second"}, idleTimeout: {count: 0, unit: "second"},
maxConns: 0, maxConns: 0,
maxIdleConns: 0, maxIdleConns: 0,
followRedirects: false followRedirects: false,
retry50X: true
} }
} }
if (reverseProxyConfig.addHeaders == null) { if (reverseProxyConfig.addHeaders == null) {
@@ -165,6 +166,7 @@ Vue.component("reverse-proxy-box", {
<input type="checkbox" v-model="reverseProxyRef.isOn"/> <input type="checkbox" v-model="reverseProxyRef.isOn"/>
<label></label> <label></label>
</div> </div>
<p class="comment">选中后,所有源站设置才会生效。</p>
</td> </td>
</tr> </tr>
<tr v-show="family == null || family == 'http'"> <tr v-show="family == null || family == 'http'">
@@ -176,7 +178,7 @@ Vue.component("reverse-proxy-box", {
<div v-show="reverseProxyConfig.requestHostType == 2" style="margin-top: 0.8em"> <div v-show="reverseProxyConfig.requestHostType == 2" style="margin-top: 0.8em">
<input type="text" placeholder="比如example.com" v-model="reverseProxyConfig.requestHost"/> <input type="text" placeholder="比如example.com" v-model="reverseProxyConfig.requestHost"/>
</div> </div>
<p class="comment">请求源站时的Host用于修改源站接收到的域名 <p class="comment">请求源站时的主机名(Host,用于修改源站接收到的域名
<span v-if="reverseProxyConfig.requestHostType == 0">"跟随CDN域名"是指源站接收到的域名和当前CDN访问域名保持一致</span> <span v-if="reverseProxyConfig.requestHostType == 0">"跟随CDN域名"是指源站接收到的域名和当前CDN访问域名保持一致</span>
<span v-if="reverseProxyConfig.requestHostType == 1">"跟随源站"是指源站接收到的域名仍然是填写的源站地址中的信息,不随代理服务域名改变而改变</span> <span v-if="reverseProxyConfig.requestHostType == 1">"跟随源站"是指源站接收到的域名仍然是填写的源站地址中的信息,不随代理服务域名改变而改变</span>
<span v-if="reverseProxyConfig.requestHostType == 2">自定义Host内容中支持请求变量</span>。</p> <span v-if="reverseProxyConfig.requestHostType == 2">自定义Host内容中支持请求变量</span>。</p>
@@ -199,7 +201,7 @@ Vue.component("reverse-proxy-box", {
</td> </td>
</tr> </tr>
<tr v-show="family == null || family == 'http'"> <tr v-show="family == null || family == 'http'">
<td>自动添加的Header</td> <td>自动添加报头</td>
<td> <td>
<div> <div>
<div style="width: 14em; float: left; margin-bottom: 1em" v-for="header in forwardHeaders" :key="header.name"> <div style="width: 14em; float: left; margin-bottom: 1em" v-for="header in forwardHeaders" :key="header.name">
@@ -207,7 +209,7 @@ Vue.component("reverse-proxy-box", {
</div> </div>
<div style="clear: both"></div> <div style="clear: both"></div>
</div> </div>
<p class="comment">选中后,会自动向源站请求添加这些Header。</p> <p class="comment">选中后,会自动向源站请求添加这些报头,以便于源站获取客户端信息。</p>
</td> </td>
</tr> </tr>
<tr v-show="family == null || family == 'http'"> <tr v-show="family == null || family == 'http'">
@@ -298,6 +300,13 @@ Vue.component("reverse-proxy-box", {
<p class="comment">源站保持等待的空闲超时时间0表示使用默认时间。</p> <p class="comment">源站保持等待的空闲超时时间0表示使用默认时间。</p>
</td> </td>
</tr> </tr>
<tr v-show="family == null || family == 'http'">
<td>自动重试50X</td>
<td>
<checkbox v-model="reverseProxyConfig.retry50X"></checkbox>
<p class="comment">选中后表示当源站返回状态码为50X比如502、504自动重试。</p>
</td>
</tr>
<tr v-show="family != 'unix'"> <tr v-show="family != 'unix'">
<td>PROXY Protocol</td> <td>PROXY Protocol</td>
<td> <td>