Can I extract the last IP address in X-Forwarded-For and assign it to a variable

Hi,
I want to get the last IP address in the X-Forwarded-For header and
assign it to a variable. I’m doing this using embeded perl now. Is there
a way I can do this using the map module and regular expressions?

Posted at Nginx Forum:

Hello!

On Fri, Jan 22, 2010 at 08:46:02PM -0500, chittis wrote:

I want to get the last IP address in the X-Forwarded-For header
and assign it to a variable. I’m doing this using embeded perl
now. Is there a way I can do this using the map module and
regular expressions?

Map? Probably you mean rewrite? Try something like this:

set $x “”;
if ($http_x_forwarded_for ~ “(\d+.\d+.\d+.\d+)$”) {
set $x $1;
}

Maxim D.

Thanks a lot. This works perfectly. Is $1 always guaranteed to be the
last IP in the X-Forwarded-For list?
Is it the string that is matched in the $ position in the regular
expression?

On Fri, Jan 22, 2010 at 7:48 PM, Maxim D. [email protected]
wrote:

nginx Info Page


Subramanyam Chitti

Hello!

On Sat, Jan 23, 2010 at 03:03:11AM -0800, Subramanyam Chitti wrote:

Thanks a lot. This works perfectly. Is $1 always guaranteed to be the
last IP in the X-Forwarded-For list?
Is it the string that is matched in the $ position in the regular expression?

Yes. $1 is a first unnamed capture from a last regular
expression executed.

Maxim D.