Nginx负载均衡[通俗易懂]

Nginx负载均衡

大家好,又见面了,我是全栈君。

apache与nginx的区别

nginx本身只能处理静态页的解析,如果要解析动态页面的话,需要用到反向代理的功能
nginx有反向代理功能,能做负载均衡。apache没有
nginx更轻量级,占用的内存很小。而apache更稳定
nginx更适合高并发,因为nginx处理请求属于异步非阻塞的,可以多个连接(万级别)对应一个进程。而apache 则是阻塞型的,一个连接对应一个进程。
nginx 处理 静态资源 性能高于apache,处理 动态语言 性能低于apache,因为nginx处理动态语言经过的层次太多了。
Nginx负载均衡[通俗易懂]
A. 使用nginx的反向代理将请求转发到php-fpm -> B.fastcgi进程管理器(php-fpm)收到请求后选择并连接一个cgi解释器

nginx的两种负载均衡方式

轮询加权(也可以不加权,就是1:1负载)和
ip_hash(根据ip分配后端服务器,解决session问题)

// 轮询加权
upstream lb {
    server 192.168.196.130 weight=1;
    server 192.168.196.132 weight=2;
}

// ip_hash轮询
upstream lb {
    server 192.168.196.130;
    server 192.168.196.132;
    ip_hash;
}

服务器环境假设

假设
192.168.1.111(主) -> 安装有LNMP,进行负载均衡控制
192.168.1.112(从) -> 安装有LNMP,进行应用运行
192.168.1.113(从) -> 安装有LNMP,进行应用运行

LNMP的安装

每台服务器都安装LNMP
参考:https://www.kancloud.cn/wangking/linux/280755

负载均衡配置

主服务器(192.168.1.111)负载均衡配置

vim /opt/nginx/conf/vhosts/zhuifanba.conf

upstream load_balance{
    # 设置负载均衡的机器列表(采用轮询的方式)
    server 192.168.1.112:80; #从服务器1
    server 192.168.1.113:80; #从服务器2
}

server {
    listen 80;
    server_name www.zhuifanba.com;
    location / {
        #设置反向代理
        proxy_pass  http://load_balance;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    }

    location ~ .*\.(php|php5)?$
    {
        #设置反向代理
        proxy_pass  http://load_balance;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    }

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
        # 设置静态文件的反向代理
        proxy_pass   http://load_balance;
        expires      30d;
    }

    location ~ .*\.(js|css)?$
    {
        # 设置静态文件的反向代理
        proxy_pass  http://load_balance;
        expires      1h;
    }
  
}

从服务器(192.168.1.112~113)运行环境配置

vim /opt/nginx/conf/vhosts/zhuifanba.conf

server {
    listen       80;
    server_name   www.zhuifanba.com;
    index index.html index.htm index.php;
    root /var/www/zhuifanba/frontend/web;

    location / {
        if (!-e $request_filename){
            rewrite ^/(.*) /index.php last;
        }
    }

    location ~ .*\.(php|php5)?$
    {
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/zhuifanba/frontend/web$fastcgi_script_name;
        include fastcgi.conf;
    }
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
        expires 30d;
    }
    location ~ .*\.(js|css)?$
    {
        expires 1h;
    }
    
    error_log /var/log/zhuifanba.error.log;
    access_log /var/log/zhuifanba.access.log;
    
}

Nginx负载均衡[通俗易懂]

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/111901.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • influxdb 文档_时序数据库 应用场景

    influxdb 文档_时序数据库 应用场景influxdb

    2022年10月5日
    3
  • 分类模型的f1值大概是多少_准确率召回率f1分数

    分类模型的f1值大概是多少_准确率召回率f1分数欢迎您对PaddleHub提出建议,非常感谢您对PaddleHub的贡献!目前PaddleHub已实现您提出的需求,请安装PaddleHub>=1.7.0,PaddlePaddle>=1.8.0快速体验。请您在定义task任务时增加metrics_choices=[‘f1’]选项,即可实现多分类F1Score评估指标,示例如下:task=hub.ImageClassifierT…

    2022年10月14日
    2
  • 深度学习:自动编码器基础和类型

    深度学习:自动编码器基础和类型本文转载自《机器之心》,原文链接:https://mp.weixin.qq.com/s/QuDa__mi1NX1wOxo5Ki94A,如有侵权请联系删除。很显然,深度学习即将对我们的社会产生重大显著的影响。Mobibit创始人兼CEOPramodChandrayan近日在codeburst.io上发文对自动编码器的基础知识和类型进行了介绍并给出了代码实例。机器之心对本文进行了…

    2022年6月3日
    35
  • sched.h (版本4.16.7全部内容)

    sched.h (版本4.16.7全部内容)/*SPDX-License-Identifier:GPL-2.0*/#ifndef_LINUX_SCHED_H#define_LINUX_SCHED_H/**Define’structtask_struct’andprovidethemainscheduler*APIs(schedule(),wakeupvariants,etc.)*/…

    2025年8月18日
    59
  • 精进Quartz源码—scheduler.start()启动源码分析(二)「建议收藏」

    scheduler.start()是Quartz的启动方式!下面进行分析,方便自己查看! 我都是分析的jobStore 方式为jdbc的SimpleTrigger!RAM的方式类似分析方式!

    2022年2月25日
    55
  • Java资源大全中文版

    Java资源大全中文版首先为自己打个广告,我目前在某互联网公司做架构师,已经有5年经验,每天都会写架构师系列的文章,感兴趣的朋友可以关注我和我一起探讨,关注我,免费分享Java基础教程,以及进阶的高级Java架构师教程,全部免费送古董级工具这些工具伴随着Java一起出现,在各自辉煌之后还在一直使用。ApacheAnt:基于XML的构建管理工具。cglib:字节码生成库。GlassFish:应用服务器,由Orac…

    2022年7月8日
    34

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号