Passing $geoip variables ( $geoip_city_country_code ) via proxy_set_header not working

Robert Suh roberts at bluenile.com
Tue Oct 18 01:40:35 UTC 2011


Hello,

We've come across a problem with trying to pass $geoip_city_country_code (and all of the other $geoip_ variables) to an upstream via proxy_set_header.

The geoip module is configured correctly and working.  We use the exact same variable name for logging.

The applicable configuration is:

http {
    geoip_city    /usr/local/share/GeoIP/GeoLiteCity.dat;

    proxy_set_header           X-Forwarded-For            $proxy_add_x_forwarded_for;
    proxy_set_header           X-GeoIP-Country-Code       $geoip_city_country_code;

    include /etc/nginx/vhosts/*.vhost;
}

/etc/nginx/vhosts/test.vhost:

server {
  listen 80;

  location / {
    proxy_pass http://127.0.0.1:9232;
  }
}

>From the localhost (127.0.0.1), I use 'nc' to listen to 9232 and from there I connect via a browser to nginx.

Here's the output after I connect to nginx via a browser.

$ nc -l 9232
GET / HTTP/1.0
Host: test
X-Forwarded-For: 172.16.n.n
Connection: close
Cache-Control: max-age=0
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.202 Safari/535.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3

If I set "proxy_set_header X-GeoIP-Country-Code True;", then the HTTP header shows up as expected.

$ nc -l 9232
GET / HTTP/1.0
Host: test
X-Forwarded-For: 172.16.n.n
X-GeoIP-Country-Code: True
Connection: close
Cache-Control: max-age=0
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.202 Safari/535.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3

This has been tested with 1.1.1 and 1.1.6 and it isn't working on either version.

Here's the output to 'nginx -V'

nginx: nginx version: nginx/1.1.1
nginx: built by gcc 4.1.2 20071124 (Red Hat 4.1.2-42)
nginx: TLS SNI support disabled
nginx: configure arguments: --prefix=/var/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/lock/nginx.lock --user=nginx --group=nginx --with-pcre --with-http_ssl_module --with-http_stub_status_module --with-http_geoip_module

What is interesting is that this webpage details doing essentially the same thing and have it work.

http://www.howtoforge.com/using-geoip-with-nginx-on-debian-squeeze-ubuntu-11.04

For us, the upstream is another webserver.

Any ideas?

Thanks,
Rob



More information about the nginx mailing list