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

 更新时间:2025年04月22日 09:49:21   作者:程序猿John  
这篇文章主要介绍了nginx实现负载均衡与实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

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 '';
    }

}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Nginx静态资源防盗链配置详解

    Nginx静态资源防盗链配置详解

    这篇文章主要为大家介绍了Nginx静态资源防盗链如何配置详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • 一文了解nginx HTTP安全响应问题

    一文了解nginx HTTP安全响应问题

    一些网站系统会经常遭到各类XSS攻击、点劫持等,从而造成重要信息的泄露以及服务器安全问题,本文就来介绍一下,感兴趣的可以了解一下
    2023-11-11
  • Nginx热部署的实现

    Nginx热部署的实现

    本文主要介绍了Nginx热部署的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • 详解Nginx反向代理到Tomcat服务器

    详解Nginx反向代理到Tomcat服务器

    本篇文章主要介绍了详解Nginx反向代理到Tomcat服务器,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • Nginx 日志轮转的实现示例

    Nginx 日志轮转的实现示例

    Nginx日志轮转是监控和调试Web服务器的重要工具,通过定期归档、压缩和清理日志文件,可以节省磁盘空间、提高性能并方便故障排查,下面就来介绍一下
    2024-12-12
  • nginx配置教程之add_header的坑详解

    nginx配置教程之add_header的坑详解

    这篇文章主要给大家介绍了关于nginx配置教程之add_header坑的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-02-02
  • 一文带你搞懂Nginx中的配置文件

    一文带你搞懂Nginx中的配置文件

    Nginx(发音为“engine-x”)是一款高性能的 Web 服务器、反向代理服务器和负载均衡器,广泛应用于全球各类网站和应用中,下面就跟随小编一起来了解下如何配置 Nginx 以满足不同的需求吧
    2025-01-01
  • Nginx 服务器开启status页面检测服务状态的方法

    Nginx 服务器开启status页面检测服务状态的方法

    这篇文章主要介绍了Nginx 服务器开启status页面检测服务状态的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-01-01
  • 一次nginx 504 Gateway Time-out错误排查、解决记录

    一次nginx 504 Gateway Time-out错误排查、解决记录

    这篇文章主要介绍了一次nginx 504 Gateway Time-out错误排查、解决记录,经过反复检查,发现造成这个问题的原因就是PHP的CURL没有设置超时时间,解决办法只要设置超时时间或者修改一下nginx的配置即可解决,需要的朋友可以参考下
    2014-05-05
  • Ubuntu系统下安装与完全卸载Nginx的步骤

    Ubuntu系统下安装与完全卸载Nginx的步骤

    在Linux服务器上管理和部署Web服务,Nginx是一个常见的选择,因为它的高性能和稳定性,这篇文章主要介绍了Ubuntu系统下安装与完全卸载Nginx的相关资料,需要的朋友可以参考下
    2025-08-08

最新评论