Go gin 获取请求IP,nginx配置方案
在Go语言中使用Gin框架获取请求IP,并配置Nginx作为反向代理时,可以通过Gin的中间件获取IP地址。在Nginx中配置相关的转发规则。
Go (Gin) 代码示例:
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
func main() {
r := gin.Default()
r.GET("/", func(c *gin.Context) {
ip := c.ClientIP()
c.String(http.StatusOK, "客户端IP: %s", ip)
})
r.Run()
}
Nginx 配置示例 (nginx.conf
):
http {
server {
listen 80;
server_name your-domain.com;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://localhost:8080; # 假设Go应用运行在本地的8080端口
proxy_redirect off;
}
}
}
在这个配置中,Nginx接收到请求后,会将请求转发到运行在localhost:8080
的Gin应用,并通过X-Real-IP
头部传递原始客户端IP地址。Gin应用通过c.ClientIP()
方法获取到这个IP地址。
评论已关闭