獲取用戶真實IP地址Nginx轉發配置方法
在做商城系統的時候需要用到用戶的真實IP,根據用戶真實IP來獲取所在區域,由于服務器使用的Nginx做代理,所以服務器端下方代碼一直返回的IP是127.0.0.1,Nginx沒有把用戶真實IP進行轉發,這時候就需要配置一下Nginx,只需要在location節點下增加以下兩行配置即可。
proxy_set_header X-Forward-For $remote_addr; proxy_set_header X-real-ip $remote_addr;
服務器端獲取用戶真實IP源碼如下:
func RemoteIp(req *http.Request) string { remoteAddr := req.RemoteAddr if ip := exnet.ClientPublicIP(req); ip != "" { remoteAddr = ip } else if ip := exnet.ClientIP(req); ip != "" { remoteAddr = ip } else if ip := req.Header.Get("X-Real-IP"); ip != "" { remoteAddr = ip } else if ip = req.Header.Get("X-Forwarded-For"); ip != "" { remoteAddr = ip } else { remoteAddr, _, _ = net.SplitHostPort(remoteAddr) } if remoteAddr == "::1" { remoteAddr = "127.0.0.1" } return remoteAddr }