Nginx The agent function and load balancing function of are the most commonly used , This paper mainly introduces the agent , Reverse proxy , Knowledge points related to load balancing , And use Nginx Implementation of reverse proxy and load balancing operation steps , For learning and sharing only , If there are shortcomings , Also please correct me .
What is agency ?
such as , At home, due to the national conditions , Google website blocked , cannot access , You need to set up a proxy server to access , The proxy server resolves the client request , Send it to the server , And receive the information from the server , And then back to the client . In the process , The server doesn't know which client is , Only communicate with the proxy server , In order to achieve the purpose of hiding the identity of the client . Another example , When outside the company , Need access to the company intranet , You have to go through VPN Connect ,VPN It is also a kind of proxy server . The proxy diagram is as follows :
What is reverse proxy ?
For high access systems , A server is unable to meet the performance requirements , Usually, multiple servers will be deployed to meet the actual needs , Such as : Baidu , Big search engines like Google . This is the time , A portal is usually set up to distribute different requests to each server . In fact, users don't know which server they are visiting , This is a good way to hide the server , It also reduces the risk of server exposure . In the process , Server acting as access gateway , It's the reverse proxy server , The schematic diagram is as follows :
The difference between forward agent and reverse agent : The proxy server is on the client side , Or the server . To hide the client , Or to hide the server .
What is load balancing ?
In the actual project server deployment process , Some servers have good performance , Some servers have poor performance , If all access is equal , Some servers will be overburdened , Some servers will waste resources , So the purpose of load balancing is to make the best use of every resource .Nginx The built-in load balancing policy provided is polling , Weighted polling ,Ip hash Three , The following three load balancing strategies are introduced respectively .
Polling is the default load balancing policy , Every service resource has equal opportunities to be allocated , The schematic diagram is shown below :
Weighted polling , And according to special needs , Each resource is weighted differently ( percentage ) Be allocated to use , In order to achieve the goal of rational utilization of resources , The schematic diagram is as follows :
ip hash,
When the user first accesses , Use polling or weighted polling to allocate resources , And then to the client request ip Conduct hash operation , And then according to hash The result will be the same client ip The request is distributed to the same server for processing , Can solve session The problem of not sharing . The schematic diagram is as follows :
Nginx Implement reverse proxy
Reverse proxy and load balancing complement each other , It's one thing , So merge and analyze . Reverse proxy , Hide service providers , Steps are as follows :
1. increase Add two virtual service hosts , As shown below :
1 server { 2 listen 8080; 3 server_name localhost; 4 location / { 5 root html2; 6 index index.html index.htm; 7 } 8 } 9 server { 10 listen 8081; 11 server_name localhost; 12 location / { 13 root html3; 14 index index.html index.htm; 15 } 16 }
The screenshot is as follows :
2. increase upstream Load balancing node , The two services point to 8080,8081 Two virtual hosts , As shown below :
1 # Add a load balancing node 2 upstream www.alan.hsiang.com { 3 server 192.168.127.132:8080; 4 server 192.168.127.132:8081; 5 }
The screenshot is as follows :
3. Increase the number of service nodes , Configure the list of proxy services , As shown below :
proxy_pass Used to point to a defined list of services
1 # Add a new service node 2 server { 3 listen 80; 4 server_name wwww.alan.hsiang.com; 5 location / { 6 #root html3; 7 #index index.html index.html; 8 proxy_pass http://www.alan.hsiang.com; 9 } 10 }
The screenshot is as follows :
4. Switch to /usr/local/nginx/sbin Under the table of contents , start-up nginx, As shown below :
5. Open the browser , Enter the domain name .
nginx The default load balancing policy is polling , You can see , After entering the domain name , As you refresh the page , The contents of the two ports alternate , As shown below :
8080 Port services , As shown below :
8081 port , The contents are as follows :
Nginx Load balancing
At the load balancing node , Configuration weight 【8080 Port services have 1/3 Probability of ,8081 Port services have 2/3 Probability of 】 As shown below :
1 # Add a load balancing node 2 upstream www.alan.hsiang.com { 3 server 192.168.127.132:8080 weight=1; 4 server 192.168.127.132:8081 weight=2; 5 }
The screenshot is as follows :
Then reload nginx that will do , Refresh the page in the browser , Will be found 8080 The number of calls is about 1/3,8081 The number of calls is about 2/3 .
Nginx Of ip hash Strategy
ip_hash:nginx Will make the same client ip Request the same server . about session Storage on the server side plays an important role , Otherwise, for the same client , If the service node is different every time you visit , You can't judge whether to log in or not session The content of judgment . use ip_hash Let the same client access the same server every time , Avoid the need to log in repeatedly .
1 # Add a load balancing node 2 upstream www.alan.hsiang.com { 3 server 192.168.127.132:8080 weight=1; 4 server 192.168.127.132:8081 weight=2; 5 ip_hash; 6 }
Configure load balancing , except weight Outside , There are other parameters , As shown below :
- down, Represents the current server Do not participate in load balancing temporarily .
- backup, Reserved backup machine . When everything else is not backup When the machine breaks down or is busy , Only request backup machine , So this machine has the least pressure .
- max_fails, Number of requests allowed to fail , The default is 1. When the maximum number of times is exceeded , return proxy_next_upstream Module definition error .
- fail_timeout, After going through max_fails After failure , Time out of service .max_fails You can talk to fail_timeout Use it together .
That's all Nginx Configure knowledge about reverse proxy and load balancing , The purpose is to throw and turn jade , Discuss together .
remarks
Send Lin Zifang to Jingci temple at dawn
After all, West Lake is in June , Scenery is not related to Four seasons are the same .
The lotus leaves are endless , The lotus against the sun is different .