Nginx: directly return $remote_addr in text/plain
The simplest way is:
location /remote_addr {
default_type text/plain;
return 200 "$remote_addr\n";
}
No need to use any 3rd party module (echo, lua etc.)
Use ngx_echo
:
location /ip {
default_type text/plain;
echo $remote_addr;
}
Use ngx_lua:
location /b {
default_type text/plain;
content_by_lua '
ngx.say(ngx.var.remote_addr)
';
}
Here's an approach you can use to consider proxied connections:
# Map IP address to variable
map ":$http_x_forwarded_for" $IP_ADDR {
":" $remote_addr; # Forwarded for not set
default $http_x_forwarded_for; # Forwarded for is set
}
server {
...
location / {
default_type text/plain;
return 200 "$IP_ADDR";
}
}