什么是反向代理与负载均衡
什么是反向代理
当我们有一个服务器集群,并且服务器集群中的每台服务器的内容一样的时候,同样我们要直接从个人电脑访问到服务器集群服务器的时候无法访问,必须通过第三方服务器才能访问集群
这个时候,我们通过第三方服务器访问服务器集群的内容,但是我们并不知道是哪一台服务器提供的内容,此种代理方式称为反向代理
什么是负载均衡
公司一般会建立很多的服务器,这些服务器组成了服务器集群,然后,当用户访问网站的时候,先访问一个中间服务器,再让这个中间服务器在服务器集群中选择一个压力较小的服务器,然后将该访问请求引入选择的服务器
所以,用户每次访问,都会保证服务器集群中的每个服务器压力趋于平衡,分担了服务器压力,避免了服务器崩溃的情况
一句话:nginx会给你分配服务器压力小的去访问,目的是防止服务器满载而出问题
反向代理与负载均衡的实现
proxy_pass反向代理
在这里当访问 hyyyh.top/api/xxx 或者 hyyyh.top/admin/xxx 的时候nginx会帮你重定向到对应的服务器端口下。(在这里仅仅只是重定向到同ip下某个端口,实际开发中应该是指向另一个服务器ip)
location ^~ /api {
proxy_pass http://hyyyh.top:3000;
}
location ^~ /admin {
proxy_pass http://hyyyh.top:3000;
}
Upstream模块实现负载均衡
这里的upstream就是用于配置负载均衡,语法:upstream name { }。
配置项里有两个server分别对应着不同的服务器,而后面的weight就是服务器分配的权重,权重越高承担的并发数也就越多
upstream group{
ip_hash;
server hyyyh.top:3001 weight=1;
server hyyyh.top:3000 weight=1;
}
location ^~ /api {
proxy_pass http://group;
}
location ^~ /admin {
proxy_pass http://group;
}
一些常用的nginx指令
- 启动nginx nginx
- 关闭nginx nginx -s stop
- 重启nginx **nginx -s reload ** //每次修改配置文件后都需要重启
- 检查配置 **nginx -t ** //如果出现下面ok和successfull就代表正确了,其他的都不对
我的博客hyyyh.top