diff --git a/internal/web/actions/default/servers/server/settings/locations/reverseProxy/setting.go b/internal/web/actions/default/servers/server/settings/locations/reverseProxy/setting.go index db30e501..9ad0c34a 100644 --- a/internal/web/actions/default/servers/server/settings/locations/reverseProxy/setting.go +++ b/internal/web/actions/default/servers/server/settings/locations/reverseProxy/setting.go @@ -86,6 +86,7 @@ func (this *SettingAction) RunPost(params struct { RequestURI: reverseProxyConfig.RequestURI, StripPrefix: reverseProxyConfig.StripPrefix, AutoFlush: reverseProxyConfig.AutoFlush, + AddHeaders: reverseProxyConfig.AddHeaders, }) this.Success() diff --git a/internal/web/actions/default/servers/server/settings/reverseProxy/setting.go b/internal/web/actions/default/servers/server/settings/reverseProxy/setting.go index 2f67d8ce..6fb63411 100644 --- a/internal/web/actions/default/servers/server/settings/reverseProxy/setting.go +++ b/internal/web/actions/default/servers/server/settings/reverseProxy/setting.go @@ -86,6 +86,7 @@ func (this *SettingAction) RunPost(params struct { RequestURI: reverseProxyConfig.RequestURI, StripPrefix: reverseProxyConfig.StripPrefix, AutoFlush: reverseProxyConfig.AutoFlush, + AddHeaders: reverseProxyConfig.AddHeaders, }) this.Success() diff --git a/web/public/js/components/server/reverse-proxy-box.js b/web/public/js/components/server/reverse-proxy-box.js index b90022af..5700f649 100644 --- a/web/public/js/components/server/reverse-proxy-box.js +++ b/web/public/js/components/server/reverse-proxy-box.js @@ -1,50 +1,86 @@ Vue.component("reverse-proxy-box", { - props: ["v-reverse-proxy-ref", "v-reverse-proxy-config", "v-is-location", "v-family"], - data: function () { - let reverseProxyRef = this.vReverseProxyRef - if (reverseProxyRef == null) { - reverseProxyRef = { - isPrior: false, - isOn: false, - reverseProxyId: 0 - } - } + props: ["v-reverse-proxy-ref", "v-reverse-proxy-config", "v-is-location", "v-family"], + data: function () { + let reverseProxyRef = this.vReverseProxyRef + if (reverseProxyRef == null) { + reverseProxyRef = { + isPrior: false, + isOn: false, + reverseProxyId: 0 + } + } - let reverseProxyConfig = this.vReverseProxyConfig - if (reverseProxyConfig == null) { - reverseProxyConfig = { - requestPath: "", - stripPrefix: "", - requestURI: "", - requestHost: "", - requestHostType: 0 - } - } - return { - reverseProxyRef: reverseProxyRef, - reverseProxyConfig: reverseProxyConfig, - advancedVisible: false, - family: this.vFamily - } - }, - watch: { - "reverseProxyConfig.requestHostType": function (v) { - let requestHostType = parseInt(v) - if (isNaN(requestHostType)) { - requestHostType = 0 - } - this.reverseProxyConfig.requestHostType = requestHostType - } - }, - methods: { - isOn: function () { - return (!this.vIsLocation || this.reverseProxyRef.isPrior) && this.reverseProxyRef.isOn - }, - changeAdvancedVisible: function (v) { - this.advancedVisible = v - } - }, - template: `
+ let reverseProxyConfig = this.vReverseProxyConfig + if (reverseProxyConfig == null) { + reverseProxyConfig = { + requestPath: "", + stripPrefix: "", + requestURI: "", + requestHost: "", + requestHostType: 0, + addHeaders: [] + } + } + + let forwardHeaders = [ + { + name: "X-Real-IP", + isChecked: false + }, + { + name: "X-Forwarded-For", + isChecked: false + }, + { + name: "X-Forwarded-By", + isChecked: false + }, + { + name: "X-Forwarded-Host", + isChecked: false + }, + { + name: "X-Forwarded-Proto", + isChecked: false + } + ] + forwardHeaders.forEach(function (v) { + v.isChecked = reverseProxyConfig.addHeaders.$contains(v.name) + }) + + return { + reverseProxyRef: reverseProxyRef, + reverseProxyConfig: reverseProxyConfig, + advancedVisible: false, + family: this.vFamily, + forwardHeaders: forwardHeaders + } + }, + watch: { + "reverseProxyConfig.requestHostType": function (v) { + let requestHostType = parseInt(v) + if (isNaN(requestHostType)) { + requestHostType = 0 + } + this.reverseProxyConfig.requestHostType = requestHostType + } + }, + methods: { + isOn: function () { + return (!this.vIsLocation || this.reverseProxyRef.isPrior) && this.reverseProxyRef.isOn + }, + changeAdvancedVisible: function (v) { + this.advancedVisible = v + }, + changeAddHeader: function () { + this.reverseProxyConfig.addHeaders = this.forwardHeaders.filter(function (v) { + return v.isChecked + }).map(function (v) { + return v.name + }) + } + }, + template: `
@@ -77,6 +113,16 @@ Vue.component("reverse-proxy-box", { + + + +
自动添加的Header +
+
+ {{header.name}} +
+
+
请求URI(RequestURI)