Home > Article > Operation and Maintenance > Nginx multi-server cluster configuration to increase website availability
Nginx multi-server cluster configuration to increase website availability
In modern Internet applications, it is crucial to ensure the high availability of the website. A common approach is to share the load by configuring a cluster of multiple servers to improve website availability and performance. This article will introduce how to use Nginx to configure a cluster of multiple servers to achieve load balancing and failover.
First, Nginx needs to be installed on all servers. You can use the following command to install:
sudo apt-get update sudo apt-get install nginx
After the installation is complete, you need to perform basic configuration of Nginx. Open Nginx's main configuration file nginx.conf
, which is usually located at /etc/nginx/nginx.conf
, and use a text editor to edit it. The main configuration items are as follows:
http { upstream backend { server server1.example.com; server server2.example.com; server server3.example.com; } server { listen 80; server_name example.com; location / { proxy_pass http://backend; } } }
In the above configuration, upstream backend
defines the list of backend servers. You can replace server1.example.com
and server2.example.com
with the real server domain name or IP address according to the actual situation. In the server
block, forward the request to the backend
backend server cluster through the proxy_pass
directive.
In order to achieve load balancing, Nginx provides a variety of load balancing algorithms. Common ones include polling (default), weighted polling, IP hashing, etc. We can implement different load balancing strategies by adding different weight
attributes in the upstream backend
block. Here are several common examples of load balancing strategies:
upstream backend { server server1.example.com; server server2.example.com; server server3.example.com; }
upstream backend { server server1.example.com weight=3; server server2.example.com weight=2; server server3.example.com; }
upstream backend { ip_hash; server server1.example.com; server server2.example.com; server server3.example.com; }
The above example defines three load balancing strategies: polling, weighted polling, and IP hashing. You can choose a suitable strategy based on your actual needs.
When a backend server goes down or cannot share the load properly, we hope that Nginx can automatically forward traffic to other available servers. , to achieve failover. To achieve this, we can add the backup
attribute to each server
block and configure the backup server.
The following is an example configuration, where server2.example.com
is the backup server:
upstream backend { server server1.example.com; server server2.example.com backup; server server3.example.com; }
In this example, if server1.example.com
does not work properly, Nginx will automatically forward traffic to server2.example.com
.
After you modify the Nginx configuration file, you can use the following command to reload the configuration to make the new configuration take effect:
sudo nginx -s reload
This completes the Nginx multi-server cluster configuration process. By configuring a cluster of multiple servers to achieve load balancing and failover, the availability and performance of the website can be improved.
Summary:
Nginx is a powerful open source reverse proxy server that can improve the availability and performance of the website through the configuration of a multi-server cluster. This article introduces the basic methods of configuring load balancing and failover through Nginx and gives code examples. It is hoped that readers can flexibly use these configurations in practical applications to improve the usability of their own websites.
The above is the detailed content of Nginx multi-server cluster configuration to increase website availability. For more information, please follow other related articles on the PHP Chinese website!