1
1
package main
2
2
3
3
import (
4
- "crypto/tls"
5
4
"flag"
5
+ "fmt"
6
6
"io"
7
7
"log"
8
8
"net/http"
9
9
"net/url"
10
10
"os"
11
11
"strconv"
12
12
"strings"
13
- "time"
14
13
)
15
14
16
15
var (
17
- target string // 目标域名
18
- port int // 代理端口
19
- httpProxy = "http://127.0.0.1:10809" // 本地代理地址和端口
16
+ target string // 目标域名
17
+ port int // 代理端口
18
+ // httpProxy = "http://127.0.0.1:10809" // 本地代理地址和端口
20
19
)
21
20
22
21
func main () {
@@ -42,6 +41,12 @@ func handleRequest(w http.ResponseWriter, r *http.Request) {
42
41
return
43
42
}
44
43
44
+ // 如果请求中包含 X-Target-Host 头,则使用该头作为目标域名
45
+ // 优先级 header > args > default
46
+ if r .Header .Get ("X-Target-Host" ) != "" {
47
+ target = "https://" + r .Header .Get ("X-Target-Host" )
48
+ }
49
+
45
50
// 去掉环境前缀(针对腾讯云,如果包含的话,目前我只用到了test和release)
46
51
newPath := strings .Replace (r .URL .Path , "/release" , "" , 1 )
47
52
newPath = strings .Replace (newPath , "/test" , "" , 1 )
@@ -52,6 +57,11 @@ func handleRequest(w http.ResponseWriter, r *http.Request) {
52
57
targetURL += "?" + r .URL .RawQuery
53
58
}
54
59
60
+ // 本地打印代理请求完整URL用于调试
61
+ if os .Getenv ("ENV" ) == "local" {
62
+ fmt .Printf ("Proxying request to: %s\n " , targetURL )
63
+ }
64
+
55
65
// 创建代理HTTP请求
56
66
proxyReq , err := http .NewRequest (r .Method , targetURL , r .Body )
57
67
if err != nil {
@@ -69,19 +79,19 @@ func handleRequest(w http.ResponseWriter, r *http.Request) {
69
79
70
80
// 默认超时时间设置为300s(应对长上下文)
71
81
client := & http.Client {
72
- Timeout : 300 * time .Second ,
82
+ // Timeout: 300 * time.Second, // 代理不干涉超时逻辑,由客户端自行设置
73
83
}
74
84
75
- // 本地测试通过代理请求 OpenAI 接口
76
- if os .Getenv ("ENV" ) == "local" {
85
+ // 支持本地测试通过代理请求
86
+ /* if os.Getenv("ENV") == "local" {
77
87
proxyURL, _ := url.Parse(httpProxy) // 本地HTTP代理配置
78
88
client.Transport = &http.Transport{
79
89
Proxy: http.ProxyURL(proxyURL),
80
90
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
81
91
}
82
- }
92
+ }*/
83
93
84
- // 向 OpenAI 发起代理请求
94
+ // 发起代理请求
85
95
resp , err := client .Do (proxyReq )
86
96
if err != nil {
87
97
log .Println ("Error sending proxy request: " , err .Error ())
0 commit comments