RealIP 项目使用教程
1. 项目的目录结构及介绍
RealIP 项目的目录结构如下:
realip/
├── LICENSE
├── README.md
├── go.mod
├── go.sum
├── realip.go
└── realip_test.go
- LICENSE: 项目的许可证文件,采用 MIT 许可证。
- README.md: 项目的说明文档,包含项目的基本介绍和使用方法。
- go.mod: Go 模块文件,定义了项目的依赖关系。
- go.sum: Go 模块的校验文件,确保依赖的完整性和安全性。
- realip.go: 项目的主要源代码文件,包含获取客户端真实 IP 的逻辑。
- realip_test.go: 项目的测试文件,包含对
realip.go
中函数的单元测试。
2. 项目的启动文件介绍
项目的启动文件是 realip.go
,其中包含了获取客户端真实 IP 的主要逻辑。以下是 realip.go
的主要内容:
package realip
import (
"net"
"net/http"
"strings"
)
// FromRequest returns the real ip from http request
func FromRequest(r *http.Request) string {
// 省略具体实现
}
FromRequest
函数用于从 HTTP 请求中获取客户端的真实 IP 地址。它首先检查 X-Forwarded-For
和 X-Real-IP
头部,如果没有找到,则返回请求的远程地址。
3. 项目的配置文件介绍
RealIP 项目没有显式的配置文件,其行为主要通过代码中的逻辑来定义。如果需要自定义行为,可以直接修改 realip.go
文件中的逻辑。
例如,如果需要添加新的头部来获取客户端 IP,可以在 FromRequest
函数中添加相应的逻辑:
func FromRequest(r *http.Request) string {
// 检查自定义头部
if ip := r.Header.Get("X-Custom-IP"); ip != "" {
return ip
}
// 省略其他逻辑
}
通过这种方式,可以根据具体需求灵活地调整项目的配置。