美文网首页
nginx部署前端项目同时做负载均衡转发请求后端多台服务

nginx部署前端项目同时做负载均衡转发请求后端多台服务

作者: 虎牙工务员刘波 | 来源:发表于2021-04-01 13:52 被阅读0次

    前言:其实配置非常简单,只是思路没搞通走了一点点弯路,这里记录下,希望大家不要踩坑,这篇文章给你们白嫖。

    场景:有一台SLB做负载均衡转发前端服务,两台ECS做项目部署机子,分别部署前端和后端项目,就是A机子部署前端,也部署后端,B机子同理。SLB用来做前端转发。(注: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机子做负载均衡转发后端请求了。

    image

    接下来配置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;
                 rewrite ^/api/(.*) /$1 break;   #注意:这里需要重写/api为空因为这个/api是我们在前端项目写的标识,手动添加上去的    }
    }
    #这里添加两个转发的地址
    upstream  loadbalance {  
        server  172.1.1.1:9000   weight=1;   #weight用来配置权重,即nginx分发请求到这里的次数占比
        server  172.1.1.2:9000   weight=1;  
        }
    

    总结:
    1、需要在前端访问后台接口的处,自己加特定标识做转发识别.
    2、需要重写这个标识,把他清空

    一定需要特别注意的是,要在前端项目手动配置这个标识,然后请求到nginx监听的端口,通过nginx做这个负载转发接口!最开始我没注意,直接配到了后端的9000端口,给自己挖坑了。

    相关文章

      网友评论

          本文标题:nginx部署前端项目同时做负载均衡转发请求后端多台服务

          本文链接:https://www.haomeiwen.com/subject/tbjtkltx.html