nginx反向代理和负载均衡

简介: 本文介绍了前端请求如何通过 Nginx 反向代理访问后端服务,解析了 Nginx 在请求转发中的作用及其配置方法。内容涵盖反向代理的基本原理、Nginx 配置示例、负载均衡策略及其实现方式,帮助读者理解前后端交互机制并掌握 Nginx 的常见用法。

我们思考一个问题:前端发送的请求,是如何请求到后端服务的?


我们来举个例子:


前端请求地址:http://localhost/api/employee/login

后端接口地址:http://localhost:8080/admin/employee/login



                                    前端请求地址

image-20221107151607921.png


后端接口地址

image-20221107151623005.png



很明显,两个地址不一致,那是如何请求到后端服务的呢?


这就涉及到了nginx的反向代理,那什么是反向代理呢?请往下看



image-20221107152041371.png


1. nginx反向代理


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

image-20221107152112092.png

那为什么不直接通过浏览器直接请求后台服务端,需要通过nginx反向代理呢?


nginx 反向代理的好处:

  • 提高访问速度
    因为nginx本身可以进行缓存,如果访问的同一接口,并且做了数据缓存,nginx就直接可把数据返回,不需要真正地访问服务端,从而提高访问速度。
  • 进行负载均衡
    所谓负载均衡,就是把大量的请求按照我们指定的方式均衡的分配给集群中的每台服务器。
  • 保证后端服务安全
    因为一般后台服务地址不会暴露,所以使用浏览器不能直接访问,可以把nginx作为请求访问的入口,请求到达nginx后转发到具体的服务中,从而保证后端服务的安全。
  • image-20221107153808368.png


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/上来。

接下来,进到nginx-1.20.2\conf,打开nginx配置


# 反向代理,处理管理端发送的请求

location /api/ {

   proxy_pass   http://localhost:8080/admin/;

   #proxy_pass   http://webservers/admin/;

}


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


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

注: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;

}


目录
相关文章
|
负载均衡 Ubuntu 应用服务中间件
|
应用服务中间件 网络安全 nginx
快速上手!使用Docker和Nginx部署Web服务的完美指南
快速上手!使用Docker和Nginx部署Web服务的完美指南
|
Linux 网络安全
Linux系统如何查看和设置防火墙规则(端口开放和禁用)
Linux系统如何查看和设置防火墙规则(端口开放和禁用)
4499 0
|
4月前
|
应用服务中间件 网络安全 nginx
手把手教你使用 Docker 部署 Nginx 教程
本文详解Nginx核心功能与Docker部署优势,涵盖镜像拉取、容器化部署(快速、挂载、Compose)、HTTPS配置及常见问题处理,助力高效搭建稳定Web服务。
1930 4
|
2月前
|
Ubuntu Linux 测试技术
Linux系统离线安装Docker完整指南
本文详细介绍在Ubuntu 24等Linux系统中离线安装Docker的完整流程,适用于内网隔离环境。涵盖安装包下载、`docker.service`配置、安装与卸载脚本编写、权限设置、镜像测试及用户组配置,并包含docker-compose的离线部署方法,助力高效完成生产环境搭建。
2941 4
Linux系统离线安装Docker完整指南
|
存储 负载均衡 中间件
Nginx反向代理配置详解,图文全面总结,建议收藏
Nginx 是大型架构必备中间件,也是大厂喜欢考察的内容,必知必会。本篇全面详解 Nginx 反向代理及配置,建议收藏。
Nginx反向代理配置详解,图文全面总结,建议收藏
|
应用服务中间件 nginx 缓存
一文掌握 Nginx 反向代理:从入门到生产级配置
本文全面解析Nginx反向代理,涵盖基础概念、负载均衡策略、SSL终止、缓存、安全防护及生产级配置,助你从入门到精通,构建高性能、高可用的Web架构。
1028 1
|
网络协议 应用服务中间件 网络安全
Nginx,正向代理
本文介绍了Nginx作为HTTPS正向代理的两种方案:HTTP CONNECT隧道(7层)和NGINX stream(4层)。HTTP CONNECT隧道需要客户端手动配置代理,通过CONNECT请求建立隧道;而NGINX stream则更适合透明代理,利用SNI字段实现流量转发。文章详细讲解了两者的原理、环境搭建、使用场景及常见问题,并提供了配置示例和最佳实践建议。内容转载自阿里云开发者社区@怀知的文章,推荐读者参阅原文获取更多信息。感谢您的阅读!
2252 80
Nginx,正向代理
|
9月前
|
Ubuntu 网络协议 应用服务中间件
在 Ubuntu 上安装 Nginx
在 Ubuntu 上安装和配置 Nginx 非常简单。首先更新系统包,然后通过 `apt` 安装 Nginx,检查服务状态并配置防火墙规则。访问服务器 IP 测试是否成功显示默认页面。还可管理服务、创建虚拟主机及排查常见问题,适合新手快速上手部署高性能 Web 服务。
1162 0

热门文章

最新文章