Is the Nginx's load balancing policy customizable in any way? Having two sites A and B I want 20% of all the requests to go to A and the rest to B. Is that possible/feasible? Is there a better solution out there for this task?




In your upstream block you can adjust the weights like this:

upstream upstream_server {
            server weight=2;
            server weight=8;

For every 10 requests, it will send 2 to 1.11, and 8 to 1.12, about an 20%/80% divide.

There are a bunch of options like to set an idle spare, and load balancing by source IP address. See the docs for more details about the upstream parameter.

  • Is this on the same physical machine or two separate. If this is on one machine does this matter, because i assume that there is only one instance of nginx running. – Saif Bechan Apr 2 '10 at 10:40
  • In our setup (+ and what I'm recommending here), .11 & .12 would be 2 separate machines. For us, nginx uses so little CPU, usually one of the machines in our upstream cluster is the nginx front-end itself. (backends are on ports other than :80) But I could conceivably see a scenario where you cannot tolerate any downtime, and can reload code by restarting the server on alternating ports on the same machine. – Jason Apr 2 '10 at 12:20

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.