proxy_pass based on (possibly changed) $host

Dave Bailey dave at daveb.net
Wed Jan 28 13:52:24 MSK 2009


Hi,

I am porting a lighttpd module that I wrote to nginx.  I am new to
nginx.  I would like to know if it is possible to choose the
proxy_pass backend from the Host header within a server.  In lighttpd,
this is possible by:

$SERVER["socket"] == ":80" {
  $HTTP["host"] == "bar.foo.com" {
    proxy-core.backends = ( "10.0.0.1:80" )
  }
  $HTTP["host"] == "baz.foo.com" {
    proxy-core.backends = ( "10.0.0.2:80" )
  }
}

The module that I am porting to nginx will sometimes update the Host
header such that a different proxy backend should be chosen.  For
example, a request from a particular IP address to http://bar.foo.com/
might be updated such that its Host header changes from bar.foo.com to
baz.foo.com, and thus it is served by the 10.0.0.2:80 backend.  Is
there a way to specify a relationship between $host and proxy_pass in
nginx.conf within the same server { ... }?

-dave





More information about the nginx mailing list