nginx部署前端代码 负载均衡

用户在前端页面点击请求, 到nginx(根据upstream配置的后端服务器 ip:端口 和 location匹配规则   负载到后端)。

nginx.conf   配置文件

#指定用户,避免权限问题
user  root;
#工作线程程数   核心数的2倍
worker_processes  1;

#日志记录
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
    
    #这一块 负载均衡  需要我们自己添加,可以写多个后端服务 server localhost:8080;
    upstream ruoyi_admin_server_group {
      #ip_hash;
      server localhost:8080;
    }

    server {
        #server模块, 监听的端口  localhost:80 访问
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        #所有的请求都会进入location中,支持正则表达式
        location / {
            root   /sino/dist;
            index  index.html index.htm;
        }
        
        location /prod-api/ {
						proxy_set_header Host $http_host;
						proxy_set_header X-Real-IP $remote_addr;
						proxy_set_header REMOTE-HOST $remote_addr;
						proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
						#server_group 's name appeal twice,http://ruoyi_admin_server_group/ 拼接以后就是http://localhost:8080/
						#转发后端站点地址,一般用于做软负载,轮询后端服务器
						#如果后端只有一个 不需要upstream ruoyi_admin_server_group, 只此 proxy_pass http://localhost:8080/; 即可
						proxy_pass http://ruoyi_admin_server_group/; 
		    }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
       
    }

}

http://192.168.188.131/prod-api/system/user/list?pageNum=1&pageSize=10

/prod-api 的接口都会转发到后端  localhost:8080/system/user/list?pageNum=1&pageSize=10

负载均衡效果:
1)ip_hash:依据ip分配方式,指定负载均衡器按照基于客户端IP的分配方式,这个方法确保了相同的客户端请求一致发送到相同的服务器,以保证session会话。这样每个访客都固定访问一个后端服务器,可以解决session不能跨服务器的问题。

upstream ruoyi_admin_server_group {
      #ip_hash;
      server localhost:8080;
}

upstream [服务器组名称]{
  ip_hash;
  server [IP地址]:[端口号];
  server [IP地址]:[端口号];
}
2)轮询:最基本的配置方法,是upstream模块默认的负载均衡策略。每个请求会按时间顺序平均分配到不同的后端服务器。

upstream [服务器组名称]{
  server [IP地址]:[端口号];
  server [IP地址]:[端口号];
}
3)weight:权重方式,在轮询策略的基础上指定轮询的几率。也可以认为是在轮询的基础上新增了一个weight的参数,此参数指定轮询的几率,值为number。

upstream [服务器组名称]{
  server [IP地址]:[端口号] weight=2;
  server [IP地址]:[端口号] weight=8;
}

location /api/v1    location /api/v2   以/api/v1开头的请求 或    以/api/v2开头的请求   都会转发到后台   即前端到后端的跳转url被nginx拦截再转发。

实现前后端分离,可以让前后端独立开发、独立部署、独立单测,双方通过JSON进行数据交互。

  对于前端开发人员来说,不用每次调试都需要启动或配置Java/Tomcat运行环境;

       对于后端开发人员来说 ,也不用在需要往JSP页面注入数据。

  通过nginx来部署前端代码,可以帮助前端实现以下基本需求:

1、请求转发,解决请求跨域的问题       使用nginx做代理来实现跨域和负债均衡

  如果有网关, 只需要配有个 location /api/v1  即请求接口先到网关, 然后有网关调用微服务。 如果没有网关,配置多个。

server {
        listen      7777;
        location /{
            root  /Users/xiaoyun/git/someproject/dist;
        }

        location /api/v1{
              proxy_set_header Host api.yourhost.com;
              proxy_pass http://api.yourhost.com/api/v1/;
        }

        location /api/v2{
                proxy_pass  http://api.yourhost.com/new;
        }
    }

  以上是一段nginx配置参考:

  listen    nginx服务端口号

  location  /    设置默认根目录所访问的本地代码路径,这里还可以设置默认主页index

  proxy_pass  请求转发,可以配置多个,从上至下进行匹配

  以第一个配置为例,即所有本地以/api/v1开头的请求都会转发至对应线上服务器,例如: http://localhost:7777/api/v1/getConfig 则会自动转发到:http://api.yourhost.com/api/v1/getConfig

  另外,还需要注意的是,proxy_pass配置的路径如果是以/结尾,如上面的配置v1,那么此时路径为相对路径,否则为绝对路径

  例如 v2的转发配置:如果请求 http://localhost:7777/api/v2/user/list  则会转发自 http://api.yourhost.com/new/user/list ,不会带有原路径的 /api/v2

2、gzip请求压缩

  网站开启gzip压缩,不仅能够节省带宽,也能够快速响应用户的访问

http{
    gzip  on;
    gzip_proxied any;
    gzip_min_length  1024;
    gzip_buffers    4 8k;
    gzip_comp_level 3;
    gzip_types      text/plain text/css application/x-javascript application/javascript application/xml application/json;
}

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值