atom feed4 messages in ru.sysoev.nginxRe: Proxying header question
FromSent OnAttachments
Wayne E. SeguinMar 23, 2007 4:39 pm 
Igor SysoevMar 31, 2007 1:26 pm 
Wayne E. SeguinMar 31, 2007 7:43 pm 
Igor SysoevApr 1, 2007 12:19 am 
Subject:Re: Proxying header question
From:Igor Sysoev (is-G@public.gmane.org)
Date:Apr 1, 2007 12:19:19 am
List:ru.sysoev.nginx

On Sat, Mar 31, 2007 at 10:43:51PM -0400, Wayne E. Seguin wrote:

On Mar 31, 2007, at 16:26 , Igor Sysoev wrote:

On Fri, Mar 23, 2007 at 07:40:03PM -0400, Wayne E. Seguin wrote:

I'm trying to setup dynamic handling based on the subdomain asked for in an application that is proxied to.

Basically I'm using:

upstream http://domain.tld {

-upstream http://domain.tld { +upstream domain.tld {

... }

server { location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host;

- proxy_set_header Host $http_host; + proxy_set_header Host $host;

proxy_redirect false;

- proxy_redirect false; + proxy_redirect off;

proxy_max_temp_file_size 0; ... if (!-f $request_filename) { proxy_pass http://domain.tld; break; } } }

What I'm finding is that the requested url "subdomain.domain.tld" doesn't pass through, instead I only get "domain.tld".

Is there a way to tell Nginx to pass this through? I've scanned the wiki but have not found this yet in there.

The subdomain.domain.tld is on the same physical host as the domain.tld ?

Igor,

Thank you very much for your response.

For three subdomains domains yes same physical host for two of the subdomains they are on two other physical hosts.

Then you should use the following configuration:

http { ...

proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_redirect off; proxy_max_temp_file_size 0;

server { server_name domain.tld;

location / { if (!-f $request_filename) { proxy_pass http://backend.domain.tld; break; } } }

server { server_name subdomain1.domain.tld;

location / { if (!-f $request_filename) { proxy_pass http://backend.subdomain1.domain.tld; break; } } }

You can not one "server" to proxy to same physical hosts, because you use "if (!-f $request_filename)" - you mix "/index.html" of one host with other hosts.