Nginx:在text/plain中直接return$remote_addr
Nginx: directly return $remote_addr in text/plain
这听起来像是一个代码高尔夫问题,但是在 text/plain
中 return $remote_addr
的最简单/最简单的方法是什么?
因此,它应该 return 几个字节的纯文本 IP 地址。
216.58.221.164
用例:API 了解客户端自己的外部 (NAT) 全球 IP 地址。
是否可以单独使用 Nginx 而无需任何后端?如果可以,怎么做?
使用ngx_echo
:
location /ip {
default_type text/plain;
echo $remote_addr;
}
使用ngx_lua:
location /b {
default_type text/plain;
content_by_lua '
ngx.say(ngx.var.remote_addr)
';
}
最简单的方法是:
location /remote_addr {
default_type text/plain;
return 200 "$remote_addr\n";
}
无需使用任何第 3 方模块(echo、lua 等)
您可以使用以下方法来考虑代理连接:
# 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";
}
}
这听起来像是一个代码高尔夫问题,但是在 text/plain
中 return $remote_addr
的最简单/最简单的方法是什么?
因此,它应该 return 几个字节的纯文本 IP 地址。
216.58.221.164
用例:API 了解客户端自己的外部 (NAT) 全球 IP 地址。
是否可以单独使用 Nginx 而无需任何后端?如果可以,怎么做?
使用ngx_echo
:
location /ip {
default_type text/plain;
echo $remote_addr;
}
使用ngx_lua:
location /b {
default_type text/plain;
content_by_lua '
ngx.say(ngx.var.remote_addr)
';
}
最简单的方法是:
location /remote_addr {
default_type text/plain;
return 200 "$remote_addr\n";
}
无需使用任何第 3 方模块(echo、lua 等)
您可以使用以下方法来考虑代理连接:
# 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";
}
}