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负载均衡[通俗易懂]

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • nginx https 开发 DAT/UAT环境配置

    nginx https 开发 DAT/UAT环境配置server{listen443;server_namedev-mosale.gblfy.com.cn;sslon;#root/home/klapp;indexindex.htmlindex.htm;ssl_certificate/home/lklapp/gblfy.com.cn_bundle.crt;ssl_certificate_key/home/lklapp/gblfy.com.cn.key;s

  • toArray()方法使用说明「建议收藏」

    toArray()方法使用说明「建议收藏」ArrayList提供了一个将List转为数组的一个非常方便的方法toArray。toArray有两个重载的方法:1.list.toArray();2.list.toArray(T[] a);对于第一个重载方法,是将list直接转为Object[]数组;第二种方法是将list转化为你所需要类型的数组,当然我们用的时候会转化为与list内容相同的类型。

  • Mac中vim永久显示行号「建议收藏」

    步骤1:cp/usr/share/vim/vimrc~/.vimrc 先复制一份vim配置模板到个人目录下步骤2:  vim ~/.vimrc 再进入insert模式,在最后加二行 syntaxon setnu!最后wq保存再次进入到vim就会永久显示行号,不用每次都setnu!…

  • 详解Cisco ACS AAA认证

    详解Cisco ACS AAA认证详解CiscoACSAAA认证近来,有些同学会问到关于AAA认证的问题,以及ciscoACS如何使用,那么今天我们就主要来讲一下关于这方面的知识。AAA代表Authentication、Authorization、Accounting,意为认证、授权、记帐,其主要目的是管理哪些用户可以访问服务器,具有访问权的用户可以得到哪些服务,如何…

  • 绝句。。。。

    绝句。。。。

  • 1602 c语言驱动程序,51单片机驱动LCD1602程序设计(C语言)很详细的教程

    1602 c语言驱动程序,51单片机驱动LCD1602程序设计(C语言)很详细的教程//********写指令函数************voidLCD_write_command(uchardat){LCD_DB=dat;LCD_RS=0;//指令LCD_RW=0;//写入LCD_E=1;//允许LCD_E=0;delay_n40us(1);//实践证明,我的LCD1602上,用for循环1次就能完成普通写指令。}//****************************…

发表回复

您的电子邮箱地址不会被公开。

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