mirror of
https://github.com/TeaOSLab/EdgeNode.git
synced 2025-11-07 02:20:25 +08:00
反向代理设置中增加移除回源主机名端口功能
This commit is contained in:
@@ -146,6 +146,12 @@ func (this *HTTPRequest) doReverseProxy() {
|
||||
} else {
|
||||
this.RawReq.Host = requestHost
|
||||
}
|
||||
|
||||
// 是否移除端口
|
||||
if this.reverseProxy.RequestHostExcludingPort {
|
||||
this.RawReq.Host = utils.ParseAddrHost(this.RawReq.Host)
|
||||
}
|
||||
|
||||
this.RawReq.URL.Host = this.RawReq.Host
|
||||
} else if this.reverseProxy.RequestHostType == serverconfigs.RequestHostTypeOrigin {
|
||||
// 源站主机名
|
||||
@@ -157,9 +163,21 @@ func (this *HTTPRequest) doReverseProxy() {
|
||||
}
|
||||
|
||||
this.RawReq.Host = hostname
|
||||
|
||||
// 是否移除端口
|
||||
if this.reverseProxy.RequestHostExcludingPort {
|
||||
this.RawReq.Host = utils.ParseAddrHost(this.RawReq.Host)
|
||||
}
|
||||
|
||||
this.RawReq.URL.Host = this.RawReq.Host
|
||||
} else {
|
||||
this.RawReq.URL.Host = this.ReqHost
|
||||
|
||||
// 是否移除端口
|
||||
if this.reverseProxy.RequestHostExcludingPort {
|
||||
this.RawReq.Host = utils.ParseAddrHost(this.RawReq.Host)
|
||||
this.RawReq.URL.Host = utils.ParseAddrHost(this.RawReq.URL.Host)
|
||||
}
|
||||
}
|
||||
|
||||
// 重组请求URL
|
||||
|
||||
@@ -208,20 +208,3 @@ func httpAcceptEncoding(acceptEncodings string, encoding string) bool {
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// 分隔编码
|
||||
func httpAcceptEncodings(acceptEncodings string) (encodings []string) {
|
||||
if len(acceptEncodings) == 0 {
|
||||
return
|
||||
}
|
||||
var pieces = strings.Split(acceptEncodings, ",")
|
||||
for _, piece := range pieces {
|
||||
var qualityIndex = strings.Index(piece, ";")
|
||||
if qualityIndex >= 0 {
|
||||
piece = piece[:qualityIndex]
|
||||
}
|
||||
|
||||
encodings = append(encodings, strings.TrimSpace(piece))
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
@@ -25,3 +25,16 @@ func ListenReuseAddr(network string, addr string) (net.Listener, error) {
|
||||
}
|
||||
return config.Listen(context.Background(), network, addr)
|
||||
}
|
||||
|
||||
// ParseAddrHost 分析地址中的主机名部分
|
||||
func ParseAddrHost(addr string) string {
|
||||
if len(addr) == 0 {
|
||||
return addr
|
||||
}
|
||||
|
||||
host, _, err := net.SplitHostPort(addr)
|
||||
if err != nil {
|
||||
return addr
|
||||
}
|
||||
return host
|
||||
}
|
||||
|
||||
14
internal/utils/net_test.go
Normal file
14
internal/utils/net_test.go
Normal file
@@ -0,0 +1,14 @@
|
||||
// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved. Official site: https://goedge.cn .
|
||||
|
||||
package utils_test
|
||||
|
||||
import (
|
||||
"github.com/TeaOSLab/EdgeNode/internal/utils"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestParseAddrHost(t *testing.T) {
|
||||
for _, addr := range []string{"a", "example.com", "example.com:1234", "::1", "[::1]", "[::1]:8080"} {
|
||||
t.Log(addr + " => " + utils.ParseAddrHost(addr))
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user