当前位置: 首页 > article >正文

nginx配置反向代理及负载均衡

目录

    • 1.前端发送的请求,是如何请求到后端服务的
      • 1.nginx 反向代理的好处:
      • 2.nginx 反向代理的配置方式:
      • 3. nginx 负载均衡的配置方式

1.前端发送的请求,是如何请求到后端服务的

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

1.nginx 反向代理的好处:

  • 提高访问速度

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

  • 进行负载均衡

    所谓负载均衡,就是把大量的请求按照我们指定的方式均衡的分配给集群中的每台服务器。

  • 保证后端服务安全

    因为一般后台服务地址不会暴露,所以使用浏览器不能直接访问,可以把nginx作为请求访问的入口,请求到达nginx后转发到具体的服务中,从而保证后端服务的安全。
    在这里插入图片描述

2.nginx 反向代理的配置方式:

server{
    listen 80;
    server_name localhost;
    # 反向代理,处理管理端发送的请求
    location /api/{
        proxy_pass http://localhost:8080/admin/; #反向代理
    }
}

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

如上代码的含义是:监听80端口号, 然后当我们访问 http://localhost:80/api/…/…这样的接口的时候,它会通过
location /api/ {} 这样的反向代理到 http://localhost:8080/admin/上来。


当在访问http://localhost/api/employee/login,nginx接收到请求后转到http://localhost:8080/admin/,故最终的请求地址为http://localhost:8080/admin/employee/login,和后台服务的访问地址一致。

3. 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名称找到一组服务器,根据设置的负载均衡策略(默认是轮询)转发到具体的服务器。

:upstream后面的名称可自定义,但要上下保持一致。


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;
}

http://www.kler.cn/a/153584.html

相关文章:

  • 30秒搞定一个属于你的问答机器人,快速抓取网站内容
  • c语言,输入整数n(行数,本例为4),按照如下规则打印数字图片 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16
  • ubuntu系统下搭建本地物联网mqtt服务器的步骤
  • 01-使用Git操作本地库,如初始化本地库,提交工作区文件到暂存区和本地库,查看版本信息,版本切换命令等
  • 【LeetCode:1094. 拼车 | 差分数组】
  • 模板上新|2023年10月DataEase模板市场上新动态
  • 【数据结构】拆分详解 - 堆
  • 数据结构算法-选择排序算法
  • webpack 使用打包报错 ERROR in node_modules\@types\node\ts4.8\assert.d.ts
  • 图解java.util.concurrent并发包源码系列——深入理解定时任务线程池ScheduledThreadPoolExecutor
  • C语言实现ARM MCU SWD离线调试器
  • Linux Spug自动化运维平台本地部署与公网远程访问
  • redis主从复制模式和哨兵机制
  • C/C++,图算法——求强联通的Tarjan算法之源程序
  • 『吴秋霖赠书活动 | 第五期』《Kubernetes原生微服务开发》
  • Spring Boot + MyBatis-Plus实现数据库读写分离
  • 在IDEA中,如何修改Jetty的端口号,操作超简单
  • elementUI实现根据屏幕大小自适应换行,栅格化布局
  • 自然语言情感分析
  • unicloud云函数url化后,客户端通过url地址向云函数发送数据流并传递到云存储中