Note: In some configurations, this returns e.g. ::ffff:1.2.3.4
for IPv4 requests and I did not resolve this yet
This nginx config will return the user’s IP address to the user. Note that it won’t work behind a reverse proxy, it actually needs to listen on port 80 and/or 443 of the IP address of the domain it is served as.
location = /api/get-my-ip { add_header 'Access-Control-Allow-Origin' '*' always; add_header 'Access-Control-Allow-Methods' 'GET, OPTIONS'; add_header 'Content-Type' 'text/plain charset=UTF-8'; return 200 '$remote_addr'; }
This is a JSON-returning variant:
location = /api/get-my-ip-json { add_header 'Access-Control-Allow-Origin' '*' always; add_header 'Access-Control-Allow-Methods' 'GET, OPTIONS'; add_header 'Content-Type' 'text/plain charset=UTF-8'; return 200 '{"ip": "$remote_addr"}'; }
This configuration is available online, for free, at techoverflow.net: See How to get your current IPv4 address using wget and How to get your current IPv6 address using wget