Nginx反向代理和负载均衡

1. nginx反向代理

nginx反向代理,就是前端发送的动态请求由nginx转发到后端服务器中

就是前端直接给nginx对应的服务端口,发送请求,然后代理服务的规则设置好,就可以由nginx帮你把请求转发到对应的服务器

为什么不直接通过浏览器去请求后台服务呢?而还需要nginx去做反向代理呢?

nginx反向代理的好处:

  1. 提高访问速度

    nginx本身可以进行缓存,如果访问的同一接口,并作了数据缓存,则nginx就直接把数据返回,不需要真正的访问服务器了,从而提高了访问速度

  2. 进行负载均衡

    可以在nginx的配置文件中,进行对服务器进行负载均衡配置,把大量请求按照我们指定的方式均衡的分配给集群中的每台服务器(默认是轮询的规则去负载均衡)

  3. 保证后端服务的安全

    一般后台服务的地址不会暴露,所以浏览器不可以直接访问,通过请求nginx后转发到具体服务器中,可以保证后端服务的安全

nginx 反向代理的配置方式:

server{
    listen 80;  #监听80端口 
    server_name localhost;  #服务器名称
    
    location /api/{
        proxy_pass http://localhost:8080/admin/; #反向代理
    }
}

proxy_pass:该指令是用来设置代理服务器的地址,可以是主机名称,IP地址加端口号等形式。

监听80端口,当由请求通过80端口访问,且请求路径是 以/api/开头的请求,如:http://localhost:80/api/../..,则会被反向代理到http://localhost:8080/admin/

实战中:

server {
        listen       9001;
        server_name  localhost;
​
        location ~ /acl/ {         #  意思是  只要请求路径中 包含/acl/的请求 就会转发到下面的服务器中  
            proxy_pass http://localhost:8201;
        }      
​
        location ~ /sys/ {           
            proxy_pass http://localhost:8202;
        }
        
        location ~ /product/ {           
            proxy_pass http://localhost:8203;
        }
        
        location ~ /search/ {           
            proxy_pass http://localhost:8204;
        }
        
        location ~ /activity/ {           
            proxy_pass http://localhost:8205;
        }
    }

2. nginx负载均衡

当如果服务以集群的方式进行部署时,那nginx在转发请求到服务器时就需要做相应的负载均衡。

负载均衡的本质上 就是通过 反向代理来实现的,最终都是请求转发

nginx负载均衡配置方式:

upstream webservers{  # 指定服务器组, 这里的名字可以随便取 ,和后面保持一致就行
    server 192.168.100.128:8080;
    server 192.168.100.129:8080;
}
server{
    listen 80;
    server_name localhost;
    
    location /api/{
        proxy_pass http://webservers/admin;#负载均衡
    }
}

upstream:如果代理服务器是一组服务器的话,我们可以使用upstream指令配置后端服务器组。

上面的意思就是,监听80端口,如果收到请求为 http://localhost:80/api/../..的请求的时候,

会通过location /api/ {}这样的反向代理到 http://webservers/admin中,

根据webservers名称找到一组服务器,根据设置的负载均衡的策略(默认轮询)转发到具体的服务器。

nginx 负载均衡策略:

名称说明
轮询默认方式
weight权重方式,默认为1,权重越高,被分配的客户端请求就越多
ip_hash依据ip分配方式,这样每个访客可以固定访问一个后端服务
least_conn依据最少连接方式,把请求优先分配给连接数少的后端服务
url_hash依据url分配方式,这样相同的url会被分配到同一个后端服务
fair依据响应时间方式,响应时间短的服务将会被优先分配

具体方式:

轮询:

upstream webservers{
    server 192.168.100.128:8080;
    server 192.168.100.129:8080;
}

weight:

upstream webservers{
    server 192.168.100.128:8080 weight=90;
    server 192.168.100.129:8080 weight=10;
}

ip_hash:

upstream webservers{
    ip_hash;
    server 192.168.100.128:8080;
    server 192.168.100.129:8080;
}

least_conn:

upstream webservers{
    least_conn;
    server 192.168.100.128:8080;
    server 192.168.100.129:8080;
}

url_hash:

upstream webservers{
    hash &request_uri;
    server 192.168.100.128:8080;
    server 192.168.100.129:8080;
}

fair:

upstream webservers{
    server 192.168.100.128:8080;
    server 192.168.100.129:8080;
    fair;
}

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值