Nginx 负载均衡Demo

前言:
=

  • 在一些生产环境当中经常会出现,一些服务器日志为502的情况,后来分析日志发现是因为网站有直播课程突发的情况下用户链接短时间内激增造成php-fpm占满。大家都知道nginx设计在linux内核2.6之后采用epoll这可以让nginx从容的处理更大的并发。白话就是.现在的瓶颈在于php-fpm的worker process不够用了,所以我们需要添加一台性能稍微差点的服务器专门来跑我们的php-fpm进程。来减轻现在的主服务器的压力。
  • 我这里的nginx.conf主配置文件中将我的虚拟主机的配置文件指定到了一个目录下面,我的站点目录vhost/easy.demo.com.conf设置如下:
vim /usr/local/nginx/conf/nginx.conf
http{
    #####此处省略n行代码
    include vhost/*.conf
}

vim /usr/local/nginx/conf/vhost/easy.demo.com.conf
upstream easy {  #注意upstream 后面指定的名称一定要在 下面的proxy_pass http://easy;中指定相同
        #server 127.0.0.1:9501 down;    down将该条下架  weight是权重占比默认是1
        ip_hash;  #负载均衡模式  默认:round-robin轮询模式
        server 127.0.0.1:9501 weight=3; #这条是权重 默认每条server的weight=1 例如现在的情况顺序应该是9501 服务3次 9503服务1次 9504服务1次 然后在循环,当然我们上面使用了ip_hash后nginx会根据用户访问的ip地址在一段时间内固定分配。现在的轮询规则的权重就限制就在于用户个数了。9501服务3个用户然后在轮到9503来服务1个用户一次类推然后在循环。
        server 127.0.0.1:9502 down;  #这条是down掉的暂时不在负载当中
        server 127.0.0.1:9503;
        server 127.0.0.1:9504;   #当然还有一个backup备用服务,但他不支持在ip_hash模式下设置。就是当所有服务主机宕机或者繁忙的时候使用该backup备用服务。所以他的压力是比较小的。
}
server
    {
        listen 80;
        #listen [::]:80;
        server_name easy.demo.com;   
        index index.php index.html index.htm default.html default.htm default.php;
        #root  /wwwroot/easy;  #由于我把所有能力都交给了负载均衡所以我讲这里指定除去了因为php-fpm可以独立服务。

        include rewrite/none.conf;
        #error_page   404   /404.html;

        # Deny access to PHP files in specific directory
        #location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }

        #include enable-php-pathinfo.conf;
        location ~* /
        {
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header Host $host;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_http_version 1.1;
           proxy_set_header Connection "keep-alive";

           if (!-f $request_filename){
                proxy_pass http://easy;
           }
        }

        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
        }

        location ~ .*\.(js|css)?$
        {
            expires      12h;
        }

        location ~ /.well-known {
            allow all;
        }

        location ~ /\.
        {
            deny all;
        }

        access_log  /home/wwwlogs/easy.demo.com.log;
        error_log /home/wwwlogs/error.easy.demo.com.log 
    }

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 必备的理论基础 1.操作系统作用: 隐藏丑陋复杂的硬件接口,提供良好的抽象接口。 管理调度进程,并将多个进程对硬件...
    drfung阅读 3,607评论 0 5
  • 2018-11-06 这一块操作系统主要分为两个部分,一个部分是书本上操作系统的知识,还有一部门是linux的相关...
    zuoerfeng阅读 2,277评论 0 1
  • python之路——IO模型 IO模型介绍 为了更好地了解IO模型,我们需要事先回顾下:同步、异步、阻塞、非阻塞 ...
    go以恒阅读 548评论 0 2
  • IO模型介绍 为了更好地了解IO模型,我们需要事先回顾下:同步、异步、阻塞、非阻塞 同步(synchronous)...
    可笑的黑耀斑阅读 1,241评论 0 2
  • title: 论事件驱动与异步IOtag: 事件驱动 异步IOcategories: notes 转载自人云思云 ...
    cmustard阅读 985评论 0 0