Thank you. In my setup all 3 servers in the upstream block will answer requests for "myapplication.net" . Knowing that, would you say my config I have is sufficient?
On Tue, Jul 5, 2016 at 1:42 PM, Reinis Rozitis <[email protected]> wrote: > But I am confused on a few concepts here. First of all, should my server >> name in the "upstream" directive be the same name in the "server_name" >> directive in the "server" stanza? Here is what I have so far: >> > > And to recap, should my server name in the "upstream" directive be the >> same name in the "server_name" directive in the "server" stanza? >> > > > It is not a requirement, but depending on how your backend servers are > configured (if they are namebased virtualhosts) you may need to specify > correct Host header. > > > By default nginx sends whatever it is given in the proxy_pass directive. > > Taking your configuration for example: > > upstream myapplication.net { > server 1.net; > server 2.net; > server 3..net; > } > > location { > proxy_pass http://myapplication.net; > } > > > 1. On startup Nginx will resolve the 1.net .. 3.net hostnames > 2. Will send to whatever upstream server IP (not using the upstream > hostsnames) it has chosen a request for 'myapplication.net' (Host). It > also doesn't use server_name. > > If the backend has a namebased configuration and there is no > 'myapplication'net' virtualhost (or it isnt the default one) the whole > request will genereally fail (not return what was expected). > > If that is the case you either need to configure the upstream block (which > for nginx is just a virtual name) and the proxy_pass to match your backend > configuration or usually people just add additional header: > > location { > proxy_pass http://myapplication.net; > proxy_set_header Host $host; > } > > This way nginx sends to backend the actual hostname from request. > > Of course you can use also $server_name (or any other variable > http://nginx.org/en/docs/varindex.html or even static value) but usually > server_name is something like .domain.com (for wildcard matching) so it > may confuse the backend. > > rr > > _______________________________________________ > nginx mailing list > [email protected] > http://mailman.nginx.org/mailman/listinfo/nginx >
_______________________________________________ nginx mailing list [email protected] http://mailman.nginx.org/mailman/listinfo/nginx
