Nginx Map how to check value if empty

c0nw0nk nginx-forum at forum.nginx.org
Sun Mar 5 21:00:35 UTC 2017


Francis Daly Wrote:
-------------------------------------------------------
> On Fri, Mar 03, 2017 at 10:47:26AM -0500, c0nw0nk wrote:
> 
> Hi there,
> 
> > map $http_cf_connecting_ip $client_ip_from_cf {
> > default $http_cf_connecting_ip;
> > }
> > 
> > How can I make it so if the client did not send that $http_ header
> it makes
> > $client_ip_from_cf variable value = $binary_remote_addr
> > 
> > Not sure how to check in a map if that http header is present.
> 
> If the http header is absent, the matching variable is empty. So it
> will
> have the value "".
> 
> Use that as the first half of your "map" pair.
> 
> 	f
> -- 
> Francis Daly        francis at daoine.org
> _______________________________________________
> nginx mailing list
> nginx at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx


Hey Francis,


HTTP BLOCK
log_format cf_custom 'CFIP:$http_cf_connecting_ip - $remote_addr -
$remote_user [$time_local]  '
'"$request" Status:$status $body_bytes_sent '
'"$http_referer" "$http_user_agent"'
'$http_cf_ray';
map $status $loggable {
~^[23]  0;
default 1;
}
access_log logs/access.log cf_custom if=$loggable;

map $remote_addr $client_ip_from_cf {
default $remote_addr;
}


Access.log output
CFIP:- - 10.108.22.40 - - [05/Mar/2017:21:27:50 +0100]  "GET 


Any idea why the remote_addr is empty surely it should display to me the
clients IP address i am not proxying traffic or anything like that. I
expected to see an IP there instead it seems the value is empty.

Posted at Nginx Forum: https://forum.nginx.org/read.php?2,272744,272766#msg-272766



More information about the nginx mailing list