文档章节

nginx配置upstream实现负载均衡

shanpeng
 shanpeng
发布于 2016/07/17 15:06
字数 788
阅读 3
收藏 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
2018/07/19
0
0
搞懂分布式技术9:Nginx负载均衡原理与实践

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

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

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

KKys
2017/02/06
0
0
Nginx安装负载均衡配置 fair check扩展

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

linjin200
2018/07/19
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

没有更多内容

加载失败,请刷新页面

加载更多

刚入职阿里,告诉你真实的职场生活,兼谈P6、P7、P8的等级

一:拿下offer的人,基本上都有什么特征? 二:为什么选择阿里? 三:阿里的工作氛围什么样? 四:阿里的薪资情况? 五:阿里的晋升空间有多大? 最近部门招聘,很多工程师,包括我在内都参与...

java知识分子
8分钟前
0
0

中国龙-扬科
11分钟前
0
0
深入理解定时器系列第一篇——理解setTimeout和setInterval

很长时间以来,定时器一直是javascript动画的核心技术。但是,关于定时器,人们通常只了解如何使用setTimeout()和setInterval(),对它们的内在运行机制并不理解,对于与预想不同的实际运行状...

Jack088
13分钟前
0
0
windows 安装nvm

1、nvw-windows的官网:https://github.com/coreybutler/nvm-windows/releases 2、选择nvm-setup.zip安装 3、配置环境变量 4、检查nvm是否安装成功 使用管理员权限打开一个命令行。输入nvm v...

灰白发
24分钟前
0
0
MySQL

慢日志查询作用 慢日志查询的主要功能就是,记录sql语句中超过设定的时间阈值的查询语句。例如,一条查询sql语句,我们设置的阈值为1s,当这条查询语句的执行时间超过了1s,则将被写入到慢查...

士兵7
25分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部