• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

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

    发布者: 浪子 | 发布时间: 2025-6-14 13:28| 查看数: 117| 评论数: 0|帖子模式

    1. 什么是nginx负载均衡

    随着业务量的提高,访问量和数据流量的快速增长,其处理能力和计算强度也相应地增大,使得单一的服务器设备根本无法承担 。 对服务器升级费用十分高昂(F5、Radware),甚至性能再卓越的设备也不能满足当前业务量增长的需求。
    针对此情况而衍生出来的一种廉价有效透明的方法以扩展现有网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性的技术就是负载均衡(Load Balance)。
    nginx负载均衡就是一种是通过软件来进行解决的,基于Linux系统并且开源的负载均衡策略.

    2. 一般中型网站架构图



    3. 实战配置nginx负载均衡

    负载均衡有多种算法:

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

    3.1 负载均衡拓扑



    3.2 如何配置
    1. upstream  test-server{
    2.     server    47.106.98.90:80 weight=1;
    3.     server    47.93.240.141:80 weight=2;
    4. }

    5. server {
    6.     listen       80;
    7.     server_name  www.test.com;
    8.     location / {
    9.         proxy_pass http://test-server;
    10.         proxy_set_header Host $host;
    11.         proxy_set_header X-Real-IP $remote_addr; //获取转发 客户端ip
    12.         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    13.         proxy_redirect default;
    14.     }

    15. }
    复制代码
    这段是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. 同样的,负载均衡也可以是作为堡垒机
    1. upstream  test-server{
    2.     server    47.106.98.99:80 weight=1;
    3. }

    4. server {
    5.     listen       80;
    6.     server_name  www.test.com;
    7.     location / {
    8.         proxy_pass http://test-server;
    9.         proxy_set_header Host $host;
    10.         proxy_set_header X-Real-IP $remote_addr; //获取转发 客户端ip
    11.         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    12.         proxy_redirect default;
    13.     }

    14. }
    复制代码
    这样就能保护 47.106.98.99 的真实ip 不暴露 , 真正暴露的是这个堡垒机的ip 。 (比如 47.100.100.100)
    域名设置方面把 域名解析到 47.100.100.100 .

    6. 配置转发 https
    1. server {
    2.     listen       443 ssl;
    3.     server_name  www.test.com;
    4.     ssl_certificate  /usr/local/wap.pem;
    5.     ssl_certificate_key  /usr/local/wap.key;
    6.     ssl_protocols        TLSv1.2;
    7.     ssl_ciphers          HIGH:!aNULL:!MD5;
    8.     location / {
    9.         limit_req zone=mylimit burst=50 nodelay;
    10.         proxy_pass https://192.168.1.62;
    11.         proxy_set_header Host $host;
    12.         proxy_set_header X-Real-IP $remote_addr;
    13.         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    14.         proxy_set_header X-Forwarded-Proto https;
    15.         proxy_redirect default;
    16.     }

    17. }
    复制代码
    转发 https ,需要证书 ,划下重点
    1. ssl_certificate  /usr/local/wap.pem;
    2. ssl_certificate_key  /usr/local/wap.key;
    复制代码
    7. 国内网址反向代理到国外https网址
    1. server {
    2.     listen       80;
    3.     server_name  ai.abc.com;
    4.     location / {
    5.         proxy_ssl_server_name on;
    6.         proxy_ssl_name api.openai.com;
    7.         proxy_ssl_verify off;
    8.         proxy_pass https://api.openai.com;
    9.         proxy_set_header Host api.openai.com;
    10.         proxy_set_header Accept-Encoding '';
    11.     }

    12. }
    复制代码
    总结

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

    来源:https://www.jb51.net/server/340104g56.htm
    免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    ×

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表