编程学习网 > 服务器 > Nginx > Nginx 之负载均衡与反向代理
2020
05-23

Nginx 之负载均衡与反向代理

 

1.轮循 每个请求逐个分发到后端服务器

2.加权轮循 按照分配的权重将请求分发到后端服务器

3.ip hash 轮询的基础上,保持一个客户端多次请求分发到一台后端服务器上

 

一、轮询配置

 #定义后端服务器组
    upstream nginx-test{
        server 192.168.0.128;
        server 192.168.0.127;
    }
    server {
        listen       8080;
        server_name  localhost;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        root   "G:/phpstudy/nginx/html";
        
        location / {
           index  index.html index.htm index.php l.php;
           autoindex  on;
           proxy_pass http://nginx-test;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        
        location ~ \.php(.*)$  {
            fastcgi_pass   127.0.0.1:9001;
            fastcgi_index  index.php;
            fastcgi_split_path_info  ^((?U).+\.php)(/?.+)$;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            fastcgi_param  PATH_INFO  $fastcgi_path_info;
            fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_path_info;
            include        fastcgi_params;
        }
        
    }

 

二、轮询加权配置

 #定义后端服务器组
    upstream nginx-test{
        server 192.168.0.128 weight=2;
        server 192.168.0.127;
        server 192.168.0.126 backup; # 备份服务器,其他服务器宕机后启动
    }
    server {
        listen       8080;
        server_name  localhost;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        root   "G:/phpstudy/nginx/html";
        
        location / {
           index  index.html index.htm index.php l.php;
           autoindex  on;
           proxy_pass http://nginx-test;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

 

三、IP Hash配置

#定义后端服务器组
    upstream nginx-test{
        ip_hash;
        server 192.168.0.128;
        server 192.168.0.127;
        server 192.168.0.126;
    }
    server {
        listen       8080;
        server_name  localhost;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        root   "G:/phpstudy/nginx/html";
        
        location / {
           index  index.html index.htm index.php l.php;
           autoindex  on;
           proxy_pass http://nginx-test;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }    
    }

 

四、负载均衡与反向代理区别

1.负载均衡需要通过反向代理来实现。

2.反向代理就是指nginx作为前端服务器,将请求转发到后端,再将后端服务器的结果,返回给客户端。它在中间做了一个代理服务器的角色。

3.负载均衡对反向代理增加了一些策略,因为后端是多台服务器,nginx会根据设定的策略将请求转发给一个相对空闲的服务器,对负载进行分流,减轻服务器压力。

 

五、反向代理配置

 #定义后端服务器组
    upstream nginx-test{
        server 192.168.0.127;
    }
    server {
        listen       8080;
        server_name  localhost;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        root   "G:/phpstudy/nginx/html";
        
      #代理配置参数
        proxy_connect_timeout 180;
        proxy_send_timeout 180;
        proxy_read_timeout 180;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarder-For $remote_addr;
        
        location / {
          proxy_pass http://nginx-test;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

 

扫码二维码 获取免费视频学习资料

Python编程学习

查 看2022高级编程视频教程免费获取