Proxy, upstream, apache vhosts not working

Hi,

I want to configure nginx as a proxy to a bunch of apaches, all serving
the same multiple websites via vhosts.

I had it working with something like
location ~* .(jpg|gif|png|css|js) {
try_files $uri @proxy;
}
location @proxy {
proxy_pass http://www.acme.net;
}
location / {
proxy_pass http://www.acme.net;
}

in my server section.
But this only asked a single apache, the one configured in /etc/hosts
for http://www.acme.net.

Now I am trying to use all of my apaches. I defined an upstream block
like this:
upstream backend-all-apaches {
server 10.10.1.25;
server 10.10.1.26;
server 10.10.1.27;
server 10.10.1.28;
server 10.10.1.15;
server 10.10.1.18;
server 10.10.1.20;
}
proxy_set_header Host $host;

And the following in my server block:
location @proxy {
proxy_pass http://backend-all-apaches;
}
All I get in my browser is a default page that also gets deliverd when I
call http://10.10.1.25 in my browser. So I assume the apaches don’t get
the right host value in the http header. I thought that
proxy_set_header Host $host;
would solve this problem, but apprently it does not.

What am I doing wrong here, or what else could I try?

Isaac

On Thursday 26 July 2012 18:48:45 Isaac H. wrote:

            proxy_pass http://www.acme.net;

like this:

What am I doing wrong here, or what else could I try?

Is the above configuration is exactly what you’re actually use?

wbr, Valentin V. Bartenev

On 07/26/2012 05:42 PM, Valentin V. Bartenev wrote:

      location @proxy {

Now I am trying to use all of my apaches. I defined an upstream block
proxy_set_header Host $host;

What am I doing wrong here, or what else could I try?

Is the above configuration is exactly what you’re actually use?
Almost. I changed IPs and servername, the rest is the same.

Isaac

So I finally found the reason: the nginx cache bit me :slight_smile:
First I did not have the line
proxy_set_header Host $host;
which got me that default page into my cache. Any subsequent
calls pulled that default page, since nginx does not know that
its just a default page I guess. So any changes I made to the config did
not change the cache. Once I removed the cache, the config line
stated above did the trick.

I noticed this because when I came back to work this morning it
suddently was working. So I tried to change the config and see what
it was, and was stuck again with the default page.
I then started tcpdump to see what the header would look like that got
send to apache. I realized that nothing got send to apache, which lead
me to the conclusion that nginx was serving out of cache. Removing
the cache did the trick.

Sorry for bothering you.

Isaac