nginx负载均衡配置

在开始之前,先讲讲本文用到的环境

准备三台linux服务器,我用的事redhat 5.6 版,信息分别如下:

服务器 A, ip 192.168.159.128
服务器 B, ip 192.168.159.129
服务器 C, ip 192.168.159.130

在此将服务器A做为主服务器,也就是转发请求,实现负载均衡的服务器。

下面开始讲解配置的步骤。

1. 修改A服务器上nginx的配置文件,我的环境中在

   配置服务器A的hosts

cd /etc/hosts

   在hosts文件中:192.168.159.128 nginxtest.com。

cd /usr/local/nginx/nginx.conf

   在nginx.conf的http命令块上下文中添加如下信息

upstream nginxtest.com { 
      server  192.168.159.129:80; 
      server  192.168.159.130:80; 
      ip_hash;                    # 将请求绑定到一个服务器上,也就是说该回话的请求在同一个应用服务器上。
}

   修改server命令块的配置,主要是配置location命令块,简单的配置如下:

server {
        listen       80;
        server_name  nginxtest.com;
        location / {
            #root   html;
            #index  index.html index.htm;
			proxy_pass         http://nginxtest.com; 
			#proxy_set_header   Host             $host:8080;  #这种方式将默认的80端口改成8080,转发后的请求的端口也是8080
			proxy_set_header   Host             $host; 
			proxy_set_header   X-Real-IP        $remote_addr; 
			proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for; 
        }
}

2. 修改服务器B和C上nginx的配置文件,主要是修改http命令块中的server命令块,如下

server {
        listen       80;
        server_name  nginxtest.com;
		
	location / {
            root   html;
            index  index.html index.htm;
        }
}

  上面配置的server_name为主服务器A的host,经测试直接配置成B服务器的域名(localhost)也是可以的。


   到此nginx负载均均衡的简单配置就完成了,最后就是启动或者重启nginx。

3. 运行结果

    如果将A、B、C三台服务器全部打开,那么当A(负载均衡服务器)接受到请求的时候,将会将请求根据nginx的转发算法,转发到相应的B、C服务器上。如图:

    负载均衡服务器A将请求转发到B服务器了,最下方内容显示为:B server is ok

213335_0jHy_1778223.png

   负载均衡服务器A将请求转发到B服务器了,最下方内容显示为:C server is ok

213600_Iq3B_1778223.png

   如果我们将B和C服务器上就收转发请求的nginx服务关闭了,此时请求无法接受处理,将转到相应配置的默认页面。我这里配置了,当没有能接受请求的服务器时,转发到错误页面。

213925_CctS_1778223.png

到这里,nginx实现简单的负载均衡的配置就完成了,当然这只是简单的配置,其中还有很多的配置和优化项,基本上也就是基于此基础上不断扩展的。

这里A服务器也是可以将请求转到到自身的,不过会造成A无限转发到自己的死循环中,当然这个通过配置是可以解决的,nginx默认监听转发80端口实现负载均衡,所以主服务器A就不能再使用80端口来处理请求了,此时只要在http命令块中再添加一个处理请求的server命令块配置,并且修改upstream配置就可以了

upstream nginxtest.com { 
      server  192.168.159.128:8080; 
      server  192.168.159.129:80; 
      server  192.168.159.130:80; 
}
server {
        listen       8080;
        server_name  nginxtest.com;
		
	location / {
            root   html;
            index  index.html index.htm;
        }
}

   这样就会将转发到自己的8080端口来处理了。

   nginx配置用有很多可配置的参数,有兴趣的朋友可以仔细研究下upstream命令块以及负载均衡相关的配置。希望能帮助到开始学习nginx的朋友,有个轻松入门的实例。


转载于:https://my.oschina.net/51stick/blog/465268

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值