浅析Nginx反向代理和负载均衡

本文深入解析Nginx反向代理原理及如何实现负载均衡,通过实例演示了Nginx如何作为反向代理服务器,为服务器集群提供请求分发与负载均衡,有效提升服务器效率和安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

浅析Nginx反向代理和负载均衡

基于上一篇博客(https://mp.youkuaiyun.com/mdeditor/83789359#)已经介绍了Nginx的一些理论和负载均衡的基础,这篇将简单分析一下Nginx在反向代理的功能,并讲解一下反向代理和负载均衡功能的联系。
1.代理服务器
代理服务器,客户机在发送请求时,不会直接发送给目的主机,而是先发送给代理服务器,代理服务接受客户机请求之后,再向主机发出,并接收目的主机返回的数据,存放在代理服务器的硬盘中,再发送给客户机。
2.正向代理和反向代理
正向代理,架设在客户机与目标主机之间,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。
(简单来说就是客户端非常明确要访问的服务器地址;服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端;正向代理模式屏蔽或者隐藏了真实客户端信息。)

反向代理,服务器架设在服务器端,通过缓冲经常被请求的页面来缓解服务器的工作量,将客户机请求转发给内部网络上的目标服务器;并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器与目标主机一起对外表现为一个服务器。
(多个客户端给服务器发送的请求,nginx服务器接收到之后,按照一定的规则分发给了后端的业务处理服务器进行处理了。此时请求的来源也就是客户端是明确的,但是请求具体由哪台服务器处理的并不明确了,nginx扮演的就是一个反向代理角色)
反向代理主要用于服务器集群分布式部署的情况下,反向代理隐藏了服务器的信息,这样做的好处就是可以防止外网对内网服务器的恶性攻击、缓存以减少服务器的压力和访问安全控制之外,还可以进行负载均衡,将用户请求分配给多个服务器。
在这里插入图片描述
3.负载均衡
这里提到的客户端发送的、nginx反向代理服务器接收到的请求数量,就是我们说的负载量
请求数量按照一定的规则进行分发到不同的服务器处理的规则,就是一种均衡规则
所以~将服务器接收到的请求按照规则分发的过程,称为负载均衡。


使用Nginx实现反向代理
1.使用IDEA跑两个简单的程序,分别占用8081和8082两个端口,我这里还是借用了上一个博客里的程序,代码也很简单。以跑8081端口的nginx1为例:
IndexController类

@RestController
public class HelloController {
    @RequestMapping(value = "/index",method = RequestMethod.GET)
    public String say(){return "这是8081端口";}
}

application.yml

server:
  port: 8081

2.修改一下本地hosts文件(C:\Windows\System32\drivers\etc)

更改本地域名

3.运行启动Nginx,这里就不介绍了,详见上一篇博客。修改nginx.conf配置文件

upstream  aaa{    
       server    127.0.0.1:8081;  
    }

	upstream  bbb{    
       server    127.0.0.1:8082;  
    }     	
	
	
    server {
			listen       80;
			server_name www.aaa.com;#指定ip地址或者域名
		location  /{
				proxy_pass http://aaa/index;#代理地址
				index  index.html index.htm;
			}
		}
	
	server {
			listen       80;
			server_name www.bbb.com;
		location  /{
				proxy_pass http://bbb/index;
				index  index.html index.htm;
			}
		}

4.输入nginx -s reload指令重新加载Nginx,使用postman查看
在这里插入图片描述
在这里插入图片描述
可以看到输入www.aaa.com和www.bbb.com分别被Nginx反向代理分配到了8081和8082的服务器上了。

总结:
如果客户机的IP和目标主机的IP在同一个网段,那就形同局域网内部发送请求,速度极快。
但如果满足不了这种需求还想到达到一个较好的请求响应时,目标主机可以对外提供一个与目标服务器在一个网段的公网IP,也就是反向代理服务的IP,通过代理服务器转发客户机请求,决定幕后的N台服务器谁来处理这个请求,并且由于反向代理服务器与目标主机在一个网段,访问速度也会很快。
Nginx用作反向代理服务器时,它就是众多反向代理服务器中的一种,通过简单的配置,指定到服务器IP或域名地址便可将客户机请求转发给指定服务器处理请求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值