Nginx反向代理与负载均衡

集群

集群就是指一组或若干个相互独立的计算机,利用高速通信网络组成的一个较大的计算机服务系统,每个集群节点(即集群中的每台计算机)都是运行各自服务的独立服务器。集群给用户的感觉就是一台服务器,而实际用户请求的是一组集群服务器。

负载均衡集群

负载均衡集群可以把许多客户集中的访问请求负载压力尽可能平均地分摊在计算机集群中处理。这样的系统非常适合使用同一组应用程序为大量用户提供服务的模式,每个节点都可以承担一定的访问请求负载压力,并且可以实现访问请求在各节点之间动态分配,以实现负载均衡。
负载均衡典型的开源软件包括:LVS、Nginx、Haproxy。

集群架构图

这里写图片描述

Nginx反向代理

比如:当请求到图片文件时,可以配置Nginx为代理服务器,图片实际真实存放在Apache服务器中,在Nginx服务器上只需要进行配置Apache服务器的地址就行可以了。

location ~ \.(jpg|jpeg|png|gif)$ {
    proxy_set_header X-Forwarded-For $remote_addr; #将用户真实IP地址携带到Apache服务器上
    proxy_pass http://123.123.123.123:80; #Apache服务器的IP和端口
}

Nginx负载均衡

准备服务器

由于博主硬件资源有限,只有一台租借的机器,我们就在这一台机器上实现Nginx的负载均衡,没错,你没有看错,我就是要在一台机器上搭建Nginx负载均衡器,两台web服务器。

安装Nginx

这个不用说了,可以去看我的文章,编译LNMP环境

配置Nginx负载均衡服务器

下面的配置是关于配置负载均衡器的,我们有两台服务器节点,虽然是一台机器,但是基于不同端口的web服务器节点。

http{
    ...

    #配置web服务器池,包含了两个web服务器节点
    upstream www_server_pools{
        server 123.206.176.159:8080 weight=1;#8080端口,权重为1
        server 123.206.176.159:8081 weight=1;#8081端口,权重为1
    }

    server {#负载均衡器域名虚拟主机
        listen 80;
        server_name test1.com test2.com;#两台web服务器节点的访问域名

        location / {
            proxy_pass http://www_server_pools;#访问test1.com或test2.com时,将请求发送给www_server_pools里面的web服务器节点

            proxy_set_header Host $host;#携带主机名去请求web服务器节点
        }
    }
}
配置web服务器节点

(1)配置123.206.176.159:8080节点

http{
    ...
    server {#test1虚拟主机
        listen 8080;
        server_name test1.com;

        location /{
            root html/test1; #显示test1项目
            index index.html index.htm;
        }

    }
    server {#test2虚拟主机
        listen 8080;
        server_name test2.com;

        location /{
            root html/test2;#显示test2项目
            index index.html index.htm;
        }
    }
}

(2)配置123.206.176.159:8081节点

http{
    ...
    server {#test1虚拟主机
        listen 8081;
        server_name test1.com;

        location /{
            root html/test3;#显示test3项目
            index index.html index.htm;
        }

    }
    server {#test2虚拟主机
        listen 8081;
        server_name test2.com;

        location / {
            root html/test4;#显示test4项目
            index index.html index.htm;
        }

    }

}

看到这里,有同学应该会觉得为什么会建立4个项目,test1,test2,test3,test4,难道不是只应该建立2个项目吗?由于我这里是在一台Nginx服务器上进行的实验,所以为了实验结果不同,我建立了4个项目,分别在4个项目中新建了index.html,内容如下:

test1/index.html文件:I am test1 server,port:8080
test2/index.html文件:I am test2 server,port:8080

test3/index.html文件:I am test1 server,port:8081
test4/index.html文件:I am test2 server,port:8081
配置host文件

记住这里对应的应该是负载均衡服务器的IP地址,不是web服务器的IP地址哦,虽然我这里web服务器的IP地址和负载均衡器的IP地址相同。

123.206.176.159       test1.com
123.206.176.159       test2.com
实验结果

这里写图片描述

可以很容易的看出来,当我第一次访问test1.com的时候,端口可能是8080,当我们第二次请求的时候,端口为8081,负载均衡服务器默认采用轮询机制,然后我们分配的权重是1:1,所以一次请求是8080,另一次请求就是8081,然后一直重复下去。同理,当我们请求test2.com是一样的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值