Incoming X-Forwarded-For in conditional evaulation

Hi.

I’ve set up nginx as a front-end for apache with mod_rpaf.

My config (parts that are meaningful for this thread) is:

http {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;

server {
    listen 80;
    server_name ~^www\.domain\.com$;
    location / {
        proxy_pass http://127.0.0.1:80;
    }
}

}

This works fine. But now I need to bypass original incoming
X-Forwarded-For without change if it equals to ‘1.2.3.4’ or ‘2.3.4.5’.

I’ve tried to filter like this:
if ($http_X-Forwarded-For = “1.2.3.4”) { proxy_set_header
X-Forwarded-For “1.2.3.4”; }
but that didn’t work. How do I evaluate incoming custom HTTP headers
(those not having their own dedicated variables like $content_length
and others) in config file?

On Wed, Oct 27, 2010 at 02:38:35PM +0400, Andrey Semyonov wrote:

Hi there,

I’ve tried to filter like this:
if ($http_X-Forwarded-For = “1.2.3.4”) { proxy_set_header
X-Forwarded-For “1.2.3.4”; }
but that didn’t work. How do I evaluate incoming custom HTTP headers
(those not having their own dedicated variables like $content_length
and others) in config file?

Without having tested whether this if/set works here:

Module ngx_http_rewrite_module gives some examples like

if ($http_user_agent ~ MSIE) {

and

if ($http_cookie ~* “id=([^;] +)(?:;|$)” ) {

which suggest the pattern used; while

http://wiki.nginx.org/HttpCoreModule#Variables says

“”"
$http_HEADER

The value of the HTTP header HEADER when converted to lowercase and
with ‘dashes’ converted to ‘underscores’, e.g. $http_user_agent,
$http_referer…;
“”"

All the best,

f

Francis D. [email protected]