nginx实现负载均衡与实例解读

2025-04-22日常编程279859

这篇文章主要介绍了nginx实现负载均衡与实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

目录
  • 1. 什么是nginx负载均衡
  • 2. 一般中型网站架构图
  • 3. 实战配置nginx负载均衡
    • 3.1 负载均衡拓扑
    • 3.2 如何配置
    • 3.3 演示
  • 4. 负载均衡的服务器如何保持内容一致
    • 4.1 那么如果其中一个服务器挂了,会怎样呢?
    • 4.2 负载均衡的服务器内容如何保持内容一致
  • 5. 同样的,负载均衡也可以是作为堡垒机
    • 6. 配置转发 https
      • 7. 国内网址反向代理到国外https网址
        • 总结

          1. 什么是nginx负载均衡

          随着业务量的提高,访问量和数据流量的快速增长,其处理能力和计算强度也相应地增大,使得单一的服务器设备根本无法承担 。 对服务器升级费用十分高昂(F5、Radware),甚至性能再卓越的设备也不能满足当前业务量增长的需求。

          针对此情况而衍生出来的一种廉价有效透明的方法以扩展现有网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性的技术就是负载均衡(Load Balance)。

          nginx负载均衡就是一种是通过软件来进行解决的,基于Linux系统并且开源的负载均衡策略.

          2. 一般中型网站架构图

          3. 实战配置nginx负载均衡

          负载均衡有多种算法:

          • 1.源地址哈希法
          • 2.轮询法
          • 3.随机法
          • 4.加权轮询法
          • 5.最小连接数法 具体算法的意思网上一大把

          3.1 负载均衡拓扑

          3.2 如何配置

          upstream  test-server{
              server    47.106.98.90:80 weight=1;
              server    47.93.240.141:80 weight=2;
          }
          
          server {
              listen       80;
              server_name  www.test.com;
              location / {
                  proxy_pass http://test-server;
                  proxy_set_header Host $host;
                  proxy_set_header X-Real-IP $remote_addr; //获取转发 客户端ip
                  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
                  proxy_redirect default;
              }
          
          }

          这段是nginx调度服务器上 nginx.conf里的设置

          nginx的负载均衡主要就是以上代码。 它放在http区块里

          test-server 是自定义的命名,可以自己自定。

          意思是:

          1. 当用户访问 www.test.com时 , 该访问会根据权重 随机分配到47.106.98.90 或 47.93.240.141 中,端口指定80

          2. 这里用了权重的算法

          3.3 演示

          重启nginx,第一次访问http://www.test.com如图所示

          • 第一次

          • 第二次

          在我们10次的刷新访问中,有3次是跳转到90这个服务器中,基本符合权重的算法

          4. 负载均衡的服务器如何保持内容一致

          4.1 那么如果其中一个服务器挂了,会怎样呢?

          我们把2号服务器(47.93.240.141)停掉

          我们刷新下页面 ,可以看到无论怎么刷新 , 都是只有1号服务器

          4.2 负载均衡的服务器内容如何保持内容一致

          ① ==图片问题==

          可以单独建立图片服务器 或 7牛云的 图片服务器 ,就是对象存储OSS

          5. 同样的,负载均衡也可以是作为堡垒机

          upstream  test-server{
              server    47.106.98.99:80 weight=1;
          }
          
          server {
              listen       80;
              server_name  www.test.com;
              location / {
                  proxy_pass http://test-server;
                  proxy_set_header Host $host;
                  proxy_set_header X-Real-IP $remote_addr; //获取转发 客户端ip
                  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
                  proxy_redirect default;
              }
          
          }

          这样就能保护 47.106.98.99 的真实ip 不暴露 , 真正暴露的是这个堡垒机的ip 。 (比如 47.100.100.100)

          域名设置方面把 域名解析到 47.100.100.100 .

          6. 配置转发 https

          server {
              listen       443 ssl;
              server_name  www.test.com;
              ssl_certificate  /usr/local/wap.pem;
              ssl_certificate_key  /usr/local/wap.key;
              ssl_protocols        TLSv1.2;
              ssl_ciphers          HIGH:!aNULL:!MD5;
              location / {
                  limit_req zone=mylimit burst=50 nodelay;
                  proxy_pass https://192.168.1.62;
                  proxy_set_header Host $host;
                  proxy_set_header X-Real-IP $remote_addr;
                  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                  proxy_set_header X-Forwarded-Proto https;
                  proxy_redirect default;
              }
          
          }

          转发 https ,需要证书 ,划下重点

          ssl_certificate  /usr/local/wap.pem;
          ssl_certificate_key  /usr/local/wap.key;

          7. 国内网址反向代理到国外https网址

          server {
              listen       80;
              server_name  ai.abc.com;
              location / {
                  proxy_ssl_server_name on;
                  proxy_ssl_name api.openai.com;
                  proxy_ssl_verify off;
                  proxy_pass https://api.openai.com;
                  proxy_set_header Host api.openai.com;
                  proxy_set_header Accept-Encoding '';
              }
          
          }

          总结

          以上为个人经验,希望能给大家一个参考,也希望大家多多支持北冥有鱼。

          您可能感兴趣的文章:

          • docker nginx(访问静态文件、访问共享目录、负载均衡)配置方式
          • Nginx+Keepalive实现高可用负载均衡
          • Nginx负载均衡中的Memcached缓存模块
          • Nginx 负载均衡实现上游服务健康检查功能
          • Nginx实现负载均衡的配置步骤
          本文地址:https://www.ufcn.cn/tutorials/3398546.html

          如非特殊说明,本站内容均来自于网友自主分享,概不代表本站观点,如有任何问题我们都将在收到反馈后的第一时间进行处理!