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

nginx负载均衡配置_第1张图片

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

nginx负载均衡配置_第2张图片

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

nginx负载均衡配置_第3张图片

到这里,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的朋友,有个轻松入门的实例。


你可能感兴趣的:(nginx,负载均衡)