Setting up load balancing in Nginx involves distributing incoming web traffic across multiple backend servers to improve performance, redundancy, and fault tolerance. Nginx provides various load balancing methods to achieve this. Here's a step-by-step guide on how to set up load balancing in Nginx:


Before you start, make sure you have:

  • Installed Nginx on your server.
  • Multiple backend servers to distribute traffic to.

Steps to Set Up Load Balancing in Nginx:

Edit the Nginx Configuration File:

Open the Nginx configuration file in a text editor. The configuration file is typically located at /etc/nginx/nginx.conf or /etc/nginx/sites-available/default. You can use the nano text editor or any other text editor of your choice:

sudo nano /etc/nginx/nginx.conf


Define an Upstream Block:

Inside the http block of your Nginx configuration file, define an upstream block that lists your backend servers. Each server should be defined with its IP address and port number. You can also specify various load balancing methods (e.g., round-robin, least_conn, etc.) based on your requirements.

For example, using the round-robin method:

http {
    upstream backend_servers {
    # ...


Configure a Location Block for Load Balancing:

In your Nginx configuration file, create a location block that specifies the path or URL where you want to apply load balancing. Inside this block, use the proxy_pass directive to pass requests to the upstream block you defined earlier.

location / {
    proxy_pass http://backend_servers;


Now your file will be look like that:

server {
  listen 80 default_server;
  listen [::]:80 default_server;
  root /var/www/html;
  server_name _;

  location / {
    try_files $uri $uri/ =404;

  # The proxy_pass setting will also make the
  # Nginx load balancer a reverse proxy
  location /{
    proxy_pass http://backend_servers;


Save and Exit:

Save the changes to your Nginx configuration file and exit the text editor.

Test the Configuration:

Before applying the new configuration, it's a good practice to test it for syntax errors:

sudo nginx -t


If there are no errors, proceed to the next step.

Reload Nginx:

Reload Nginx to apply the new configuration:

sudo systemctl restart nginx


Monitoring and Scaling:

You can monitor the load balancing performance using various tools like Nginx's built-in status module, external monitoring tools, or log analysis.To scale your setup, simply add more backend servers to the upstream block as needed. Nginx will automatically distribute incoming traffic across the available servers.

That's it! You've successfully set up load balancing in Nginx. Incoming requests will now be distributed across the specified backend servers, improving the overall performance and reliability of your web application.

Category : #web server

Tags : #web server , #nginx