Golang — функция вывода user IP
В случае использования вашего приложения через load balancer или через различные прокси вида Cloudflare задача вывода клиентского IP адреса заключается в правильной выборке header. От X-Real-Ip до CF_CONNECTING_IP или же X-Original-Forwarded-For. Для этого я написал простую функцию по выборке IP адреса:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
func readUserIP(r *http.Request) string { address := r.Header.Get("X-Original-Forwarded-For") if address == "" { address = r.Header.Get("X-Forwarded-For") } if address == "" { address = r.Header.Get("X-Real-Ip") } if address == "" { address = r.RemoteAddr } return address } |
Алгоритм…
Read more