文档章节

nginx配置upstream实现负载均衡

shanpeng
 shanpeng
发布于 2016/07/17 15:06
字数 788
阅读 0
收藏 0

10.130.130.84

 

upstream.ntest.conf

 

upstream ntest {

#    #ip_hash;

    server 10.130.130.84:1818;

    server 10.130.130.89:1818;

}

 

server {

    #set $host_path "/data/www/ntest";

    #access_log  /www/mysite/log/access.log  main;

 

    listen 80;

    server_name  ntest.happyelements.net;

    #root   /data/www/ntest;

    #set $yii_bootstrap "index.php";

 

    #error_log  /tmp/nginx/error.log  debug;  

    #charset utf-8;

    #proxy_pass http://ntest;

 

 

    location / {

        #index  $yii_bootstrap;

        #try_files $uri $uri/ /$yii_bootstrap?$args;

        proxy_pass http://ntest;

        proxy_set_header   Host             $host;

        proxy_set_header   X-Real-IP        $remote_addr;

        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;

    }

}

 

ntest.conf

server {

    #set $host_path "/data/www/ntest";

    #access_log  /www/mysite/log/access.log  main;

 

    listen 1818;

    server_name  ntest.happyelements.net;

    root   /data/www/ntest;

    set $yii_bootstrap "index.php";

 

    error_log  /tmp/nginx/error.log  debug;

    charset utf-8;

    #proxy_pass http://ntest;

 

 

    location / {

        index  $yii_bootstrap;

        try_files $uri $uri/ /$yii_bootstrap?$args;

        #proxy_pass http://ntest;

    }

 

 

    #location ~ ^/(protected|framework|themes/\w+/views) {

    #    deny  all;

    #}

 

    #avoid processing of calls to unexisting static files by yii

    #location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {

    #    try_files $uri =404;

    #}

 

    #location ~* \.(txt|doc|docx|zip|rar|xlsx|xls)$ {

    #    root /data/www/ntest/upload;

    #    deny all;

    #}

 

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

    #

    location ~ \.php {

        fastcgi_split_path_info  ^(.+\.php)(.*)$;

 

        #let yii catch the calls to unexising PHP files

        set $fsn /$yii_bootstrap;

        if (-f $document_root$fastcgi_script_name){

            set $fsn $fastcgi_script_name;

        }

 

        #fastcgi_pass   unix:/tmp/php-cgi.sock;

        #fastcgi_pass   127.0.0.1:9000;

        fastcgi_pass  unix:/tmp/php-cgi.sock;

        fastcgi_index  index.php;

        include fastcgi_params;

        fastcgi_param  SCRIPT_FILENAME  $document_root$fsn;

 

        #PATH_INFO and PATH_TRANSLATED can be omitted, but RFC 3875 specifies them for CGI

        #fastcgi_param  PATH_INFO        $fastcgi_path_info;

        fastcgi_param  PATH_INFO        $fastcgi_script_name;

        fastcgi_param  PATH_TRANSLATED  $document_root$fsn;

    }

 

    # prevent nginx from serving dotfiles (.htaccess, .svn, .git, etc.)

    location ~ /\. {

        deny all;

        access_log off;

        log_not_found off;

    }

 

 

 

10.130.130.89

 

ntest.conf

server {

    #set $host_path "/data/www/ntest";

    #access_log  /www/mysite/log/access.log  main;

 

    listen 1818;

    server_name  ntest.happyelements.net;

    root   /data/www/ntest;

    set $yii_bootstrap "index.php";

 

    #error_log  /tmp/nginx/error.log  debug;  

    charset utf-8;

    #proxy_pass http://ntest;

 

 

    location / {

        index  $yii_bootstrap;

        try_files $uri $uri/ /$yii_bootstrap?$args;

        #proxy_pass http://ntest;

    }

 

 

    #location ~ ^/(protected|framework|themes/\w+/views) {

    #    deny  all;

    #}

 

    #avoid processing of calls to unexisting static files by yii

    #location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {

    #    try_files $uri =404;

    #}

 

    #location ~* \.(txt|doc|docx|zip|rar|xlsx|xls)$ {

    #    root /data/www/ntest/upload;

    #    deny all;

    #}

 

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

    #

    location ~ \.php {

        fastcgi_split_path_info  ^(.+\.php)(.*)$;

 

        #let yii catch the calls to unexising PHP files

        set $fsn /$yii_bootstrap;

        if (-f $document_root$fastcgi_script_name){

            set $fsn $fastcgi_script_name;

        }

 

        #fastcgi_pass   unix:/tmp/php-cgi.sock;

        #fastcgi_pass   127.0.0.1:9000;

        fastcgi_pass  unix:/tmp/php-cgi.sock;

        fastcgi_index  index.php;

        include fastcgi_params;

        fastcgi_param  SCRIPT_FILENAME  $document_root$fsn;

 

        #PATH_INFO and PATH_TRANSLATED can be omitted, but RFC 3875 specifies them for CGI

        #fastcgi_param  PATH_INFO        $fastcgi_path_info;

        fastcgi_param  PATH_INFO        $fastcgi_script_name;

        fastcgi_param  PATH_TRANSLATED  $document_root$fsn;

    }

 

    # prevent nginx from serving dotfiles (.htaccess, .svn, .git, etc.)

    location ~ /\. {

        deny all;

        access_log off;

        log_not_found off;

    }

 

 

}

Nginx来做负载设备,记录下upstream的几种配置方式。

第一种:轮询

upstream test{
   server 192.168.0.1:3000;
   server 192.168.0.1:3001;
}

第二种:权重

upstream test{
   server 192.168.0.1 weight=2;
   server 192.168.0.2 weight=3;
}

这种模式可解决服务器性能不等的情况下轮询比率的调配

第三种:ip_hash

upstream test{
   ip_hash;
   server 192.168.0.1;
   server 192.168.0.2;
}

这种模式会根据来源IP和后端配置来做hash分配,确保固定IP只访问一个后端

第四种:fair

需要安装Upstream Fair Balancer Module

upstream test{
   server 192.168.0.1;
   server 192.168.0.2;
   fair;
}

这种模式会根据后端服务的响应时间来分配,响应时间短的后端优先分配

第五种:自定义hash

需要安装Upstream Hash Module

upstream test{
   server 192.168.0.1;
   server 192.168.0.2;
   hash $request_uri;
}

这种模式可以根据给定的字符串进行Hash分配

具体应用:

server{
   listen 80;
   server_name .test.com;
   charset utf-8;

   location / {
       proxy_pass http://test/;
   } 
}

此外upstream每个后端的可设置参数为:

1.down: 表示此台server暂时不参与负载。

2.weight: 默认为1,weight越大,负载的权重就越大。

3.max_fails: 允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream模块定义的错误。

4.fail_timeout: max_fails次失败后,暂停的时间。

5.backup: 其它所有的非backup机器down或者忙的时候,请求backup机器,应急措施。

© 著作权归作者所有

共有 人打赏支持
shanpeng
粉丝 1
博文 4
码字总数 3869
作品 0
海淀
技术主管
Nginx学习之负载均衡fair模块

Nginx学习之负载均衡fair模块 2017-04-10 20:27 写在开始 前面对Nginx的三种负载均衡实现做了一个简单的介绍,这里分享一个第三方的负载均衡模块nginx-upstream-fair。 模块介绍 The Nginx ...

linjin200
07/19
0
0
搞懂分布式技术9:Nginx负载均衡原理与实践

Nginx负载均衡与反向代理—《亿级流量网站架构核心技术》 原创: 张开涛 开涛的博客 2017-03-24 本篇摘自《亿级流量网站架构核心技术》第二章 Nginx负载均衡与反向代理 部分内容。 当我们的应...

你的猫大哥
06/22
0
0
分布式学习(3) ---- 初识Nginx

Nginx两大作用:1.轻量web容器 2.反向代理服务器。 在Java领域中,Nginx更多的被用作在前端提供负载均衡的反向代理服务。 所以本文仅简要介绍下反向代理概念和负载均衡的实现。 . 反向代理 ...

KKys
2017/02/06
0
0
Nginx配置负载均衡(upstream)+反向代理(httpproxy)

首先准备3台机器(当然是vm虚拟机),一台用来做负载均衡服务器,2台web服务,分别都安装上nginx,怎么安装nginx这里就不在叙述。 IP规划 => 负载均衡服务器:10.1.1.10 | web-1:10.1.1.11...

skyli
2015/04/02
0
4
Nginx安装负载均衡配置 fair check扩展

Nginx安装负载均衡配置 fair check扩展 前言 本文主要是针对Nginx安装、负载均衡配置,以及fair智能选举、check后端节点检查扩展功能如何扩展,进行讲解说明。 fair模块: upstream-fair,“...

linjin200
07/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

给MySQL授权远程访问

putty登录服务器; 登录MySQL: mysql -u root -p 新建远程用户: CREATE USER 'myusername' IDENTIFIED BY 'mypassword'; 授权: grant all on *.* to john@'101.102.103.104' identified by......

sweethome
56分钟前
0
0
在t-io老巢造谣,不过有造谣的就会有反造谣的!

只发当事人的截图,不发表评论,以免有引导嫌疑 PS: 截图是由不同的人发过来的 本人已经不在此微信群 图3:有造谣的,就有反造谣的 图4是2018-09-23的t-io官方群的一个发言小统计,有助于让...

talent-tan
今天
99
0
heartbeat 资源

drbd+apache+heartbeat : http://blog.51cto.com/11838039/1827901 heartbeat双机热备的架设 : http://blog.51cto.com/11838039/1827560 对heaetbeat的深一步认识 : http://blog.51cto.co......

寰宇01
今天
4
0
Spring 转换 model 为 json 时增加属性

缘起 目前的项目中有个需求是在附件对象转换成 json 时增加个 url 属性,以前的方式是在返回附件对象或列表时候做一次统一处理,这次想看看 spring 或者 jackson fasterxml 是否自带类似功能...

郁也风
今天
4
0
10大PHP比特币开源项目

如果你是一个Phper,如果你希望学习区块链,那么本文列出的 10个开源的Php比特币项目,将有助于你了解在自己的应用中 如何加入对比特币的支持。 如果你希望快速掌握使用Php对接比特币钱包的方...

汇智网教程
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部