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)
上一篇 2022年2月13日 上午11:00
下一篇 2022年2月13日 上午11:00


相关推荐

  • 三极管饱和条件[通俗易懂]

    三极管饱和条件[通俗易懂]三极管饱和条件 0推荐1.在实际工作中,常用Ib*β=V/R作为判断临界饱和的条件。根据Ib*β=V/R算出的Ib值,只是使晶体管进入了初始饱和状态,实际上应该取该值的数倍以上,才能达到真正的饱和;倍数越大,饱和程度就越深。 2.集电极电阻越大越容易饱和;3.饱和区的现象就是:二个PN结均正偏,IC不受IB之

    2025年10月24日
    8
  • Eclipse汉化教程(详细图解)

    Eclipse汉化教程(详细图解)eclipse语言包下载:http://www.eclipse.org/babel/downloads.php1、打开浏览器,浏览“参考资料”内给出的“eclipse语言包下载”地址,在博客新页面找到地址链接,如图所示。“BabelLanguage…”开头的一栏下面就是各个eclise版本的语言包,2、目标锁定“BabelLanguagePackUpdateSiteforNeon”

    2022年6月5日
    153
  • Linux常用命令详解_常用shell命令

    Linux常用命令详解_常用shell命令一、日常使用命令/常用快捷键命令开关机命令    1、shutdown–hnow:立刻进行关机     2、shutdown–rnow:现在重新启动计算机     3、reboot:现在重新启动计算机     4、su-:切换用户;passwd:修改用户密码     5、logout:用户注销常用快捷命令     1、…

    2022年8月21日
    8
  • JQuery的submitHandler

    之前做表单验证,有设置submitHandlersubmitHandler:function(){$(“form”).submit();}这样表单验证通过后会自动提交。。。。改为submitHandler:function(form){form.submit();}否则,button按钮提交表单之后,表单会提交两次,前端造成stack溢出…

    2022年4月5日
    276
  • springboot整合jedisCluster[通俗易懂]

    springboot整合jedisCluster[通俗易懂]JedisClusterjedis客户端提供的一个操作集群的连接对象;底层封装了单个节点电连接对象,封装了连接池的对外使用的集群对象;测试连接代码•收集节点信息(redis-cluster可以只提供若干个节点) @Test publicvoidtest(){ //收集若干个节点信息 Set<HostAndPort>set=newHashSet<Ho…

    2022年10月14日
    5
  • modelsim-win64-10.4-se 破解(win7实验成功)(其他操作系统也可参考,大同小异)

    modelsim-win64-10.4-se 破解(win7实验成功)(其他操作系统也可参考,大同小异)下载好的文件如下图,包括安装文件以及破解文件:1、运行modelsim-win64-10.4-se.exe,安装软件;     注意事项:安装路径可自行设置,但不要出现汉字。本例安装路径为:D:\modeltech64_10.4\win642、将解压的破解文件(MentorKG.exe和patch_dll.bat)复制到安装目录下的win64文件夹中。3、进入安装目录下的win64 文件夹…

    2022年5月10日
    118

发表回复

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

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