目录
1.源码结构体
type ReverseProxy struct {
// Rewrite 必须是一个函数,用于将请求修改为要使用 Transport 发送的新请求。然后,其响应将原封不动地复制回原始客户端。返回后,Rewrite 不得访问提供的 ProxyRequest 或其内容。
// 在调用 Rewrite 之前,将从出站请求中删除 Forwarded、X-Forwarded、X-Forwarded-Host 和 X-Forwarded-Proto 标头。另请参阅 ProxyRequest.SetXForwarded 方法。
// 在调用 Rewrite 之前,将从出站请求中删除不可解析的查询参数。Rewrite 函数可以将入站 URL 的 RawQuery 复制到出站 URL 以保留原始参数字符串。请注意,如果代理对查询参数的解释与下游服务器的解释不匹配,这可能会导致安全问题。
// 最多可以设置 Rewrite 或 Director 中的一个。
Rewrite func(*ProxyRequest)
// Director 是一种将请求修改为要使用 Transport 发送的新请求的功能。然后,其响应将原封不动地复制回原始客户端。Director 在返回后不得访问提供的请求。
//默认情况下,X-Forwarded-For 标头设置为客户端 IP 地址的值。如果 X-Forwarded-For 标头已存在,则客户端 IP 将附加到现有值。作为特殊情况,如果标头存在于 Request.Header 映射中,但具有 nil 值(例如由 Director func 设置时),则不会修改 X-Forwarded-For 标头。
// 为防止 IP 欺骗,请务必删除来自客户端或不受信任的代理的任何预先存在的 X-Forwarded-For 标头。
// 在 Director 返回后,将从请求中删除