Nginx 负载均衡Demo

2019-10-19  本文已影响0人  Stilwell

前言:
=

  • 在一些生产环境当中经常会出现,一些服务器日志为502的情况,后来分析日志发现是因为网站有直播课程突发的情况下用户链接短时间内激增造成php-fpm占满。大家都知道nginx设计在linux内核2.6之后采用epoll这可以让nginx从容的处理更大的并发。白话就是.现在的瓶颈在于php-fpm的worker process不够用了,所以我们需要添加一台性能稍微差点的服务器专门来跑我们的php-fpm进程。来减轻现在的主服务器的压力。
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 
    }

上一篇 下一篇

猜你喜欢

热点阅读