Nginx-反向代理和负载均衡


前言

Nginx服务器经常被用于设置反向代理和负载均衡,这篇文章简要说明一下是如何设置的。


一、反向代理

反向代理可以把请求分配到不同的服务器上。
现在有三个服务器它们的访问地址如下:

服务器1:localhost:8080
服务器2:localhost:8081
服务器3:localhost:8082

我这里使用js代码在node环境下运行来作为三个不同的服务器,以下是第一个服务器的js代码:

// 引入http模块  
const http = require('http');

// 创建HTTP服务器  
const server = http.createServer((req, res) => {
  // 设置响应头  
  res.writeHead(200, { 'Content-Type': 'text/plain' });
  // 发送响应体  
  res.end('你访问到服务1了!端口号是8080\n');
});

// 监听8080端口  
server.listen(8080, () => {
  console.log('Server is running at http://localhost:8080/');
});

// 错误处理  
server.on('error', (e) => {
  if (e.code == 'EADDRINUSE') {
    console.error('端口8080已被占用,请更换端口或检查是否有其他应用正在使用该端口。');
  }
  // 处理其他类型的错误  
});

另外两个服务器只要更改端口号即可。

现在给nginx进行如下配置来完成反向代理:

在这里插入图片描述
一般一个请求路径的成分是协议://服务器地址/服务器资源地址。其中服务器地址即服务器的ip或域名,经过上面的配置后,服务器资源地址中含app的请求,都会使用nginx的反向代理功能随机转发到代理的服务器上:
在这里插入图片描述
这里可以看到请求被转发到了8081端口的服务器上(前面的乱码是编码方式不统一造成的,但不影响结果),接下来用同样的请求地址继续访问:
在这里插入图片描述
发现请求被转发给了8080端口的服务器,于是反向代理设置成功。

二、负载均衡

反向代理把请求进行了分流,但这还不够,不同的服务器性能是不一样的,我们分流时可以让性能较好的服务器处理更多的请求,以此保证更高的可用性。这就是负载均衡。
有两种方案:权重ip_hash

1.权重

可以为代理的服务器各自分配一个全权重值,权重越高的服务器分配到请求的可能性越大,即请求多时其分配到的请求越多。
要为代理的服务器分配权重,直接在后面用weight指定即可,默认情况是1.如下:
在这里插入图片描述

2.ip_hash

该方案会将请求的ip地址进行hash计算,同样的请求ip多次访问固定转发到同一服务器。
如下:
在这里插入图片描述
这样一来,同一客户端发送的请求每次都是访问同一服务器:
在这里插入图片描述


总结

这里简单说明了一下如何用nginx配置反向代理和负载均衡

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值