【问题标题】:What is the difference between reverse-proxy and load-balancer in Nginx?Nginx 中的反向代理和负载均衡器有什么区别?
【发布时间】:2021-05-20 13:51:21
【问题描述】:

TCP 服务器

import socket
s1 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s1.bind(('0.0.0.0', 5010))
s1.listen(1)
c1 = s1.accept()

Nginx 负载均衡配置

stream {
    upstream lbc {
        server localhost:5010;
        server localhost:5020;
    }
    server {
        listen 8090;
        proxy_pass lbc;
    }
}

卷曲命令

curl localhost:8090

netstat 输出

$> sudo netstat -nalp | egrep "5010|8090"
tcp        0      0 0.0.0.0:5010            0.0.0.0:*               LISTEN      43545/python3
tcp        0      0 0.0.0.0:8090            0.0.0.0:*               LISTEN      38059/nginx: master
tcp       78      0 127.0.0.1:5010          127.0.0.1:44000         ESTABLISHED 43545/python3
tcp        0      0 127.0.0.1:8090          127.0.0.1:39488         ESTABLISHED 43367/nginx: worker
tcp        0      0 127.0.0.1:44000         127.0.0.1:5010          ESTABLISHED 43367/nginx: worker
tcp        0      0 127.0.0.1:39488         127.0.0.1:8090          ESTABLISHED 43546/curl

接下来,我将 Nginx 负载平衡配置替换为如下所示的 Nginx 反向代理配置并运行 curl 命令。我看到类似的 netstat 输出(除了端口不同)。我没有看到 Nginx 的转发机制有任何变化。

Nginx 反向代理配置

http {
    upstream lbc {
        server localhost:5010;
        server localhost:5020;
    }
    server {
        listen 8090;
        location / {
            proxy_pass http://lbc;
        }
    }
}

那么反向代理和负载均衡有什么区别呢?

【问题讨论】:

    标签: nginx load-balancing reverse-proxy


    【解决方案1】:

    反向代理通常与单个基础架构 Web/应用服务器一起使用。负载平衡与后端的多个 Web/应用服务器一起使用。它们都有优点/缺点,并且根据部署场景,一个比另一个更好。

    【讨论】:

      猜你喜欢
      • 2020-05-04
      • 2022-01-03
      • 2020-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-01
      • 2016-11-08
      相关资源
      最近更新 更多