1.场景

有一台SLB做负载均衡转发前端服务,两台ECS做项目部署机子,分别部署前端和后端项目,就是A机子部署前端,也部署后端,B机子同理。SLB用来做前端转发。

需求:需要请求A机子时需要负载分发到A后端或者B后端,请求B机子时候负载到A机子的服务或者B机子的后端服务。 需求 项目大致请求流程图,图上slb的可不用看,我们主要看nginx配置。 注意:我们需要在前端项目ip那边配置特定的标识,即例如在请求后端的接口加上 /api ,或者其他的 /testApi...随便都可以,只要分得清,最好命名规范)

那么我部署上去的 ip就为:http://172.1.1.1/api ,将前端打包部署上去到A机子。

把ip改为:http://172.1.1.2/api,再将前端打包,部署到B机子上去。

这样就能使得每次可以用A机子或者B机子做负载均衡转发后端请求了。 前端

2.配置nginx

server {
    listen       80;
    server_name  localhost;  #这是配置前端项目地址
    location / {
        root   /etc/nginx/html/dist;
        index  index.html index.htm;
        try_files $uri /index.html;     #这个用来防止刷新页面404
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
  #这里是配置负载均衡
    location ^~/api {      #添加请求头什么的,通过F12可以响应头那边可以看到自己配置的这些头部内容,我这里暂时不用就注释了
            # add_header Access-Control-Allow-Origin *;
            # add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
            # add_header Access-Control-Allow-Headers 'Cache-Control,Content-Type,Authorization,id_token';

            if ($request_method = 'OPTIONS') {
                return 204;
            }
            # 前端调用接口时有/api的url都会转发到后端(loadbalance为上面upstream关键字后面的名字)
            proxy_pass http://loadbalance/api;
}
#这里添加两个转发的地址
upstream  loadbalance {  
    server  172.1.1.1:9000   weight=1;   #weight用来配置权重,即nginx分发请求到这里的次数占比
    server  172.1.1.2:9000   weight=1;  
    }