Linux下如何配置Nginx负载均衡(避坑指南)

先发一个完整的配置,这是一个最精简的配置,仅仅完成以下配置后,Nignx就可以实现最基础的负载均衡功能。

Http{
	upstream myservers{
	        server 10.15.97.185:5000;
	        server 10.15.97.79:5000;
	    }
	
	
	server {
	        listen       80;
	        server_name  localhost;
	
	        location / {
	            proxy_pass http://myservers;
	            #proxy_set_header    Host  $host;
	            #root   html;
	            #index  index.html index.htm;
	        }
	
	    }

}

下面我们来详细讲解一下配置方面的问题,以及可能遇到的大坑

假设有A,B,C三个服务器,A是Nginx部署的机器,B,C两个服务器分别部署了一个作为负载均衡用的网站。首先要强调一点,只有A机器安装了Nginx就可以了,B,C两台 用作负载均衡的机器不需要安装Nginx。

打开配置文件

一般配置文件是/usr/local/nginx/conf下的nginx.conf文件,找到并打开文件,避坑指南可以参看文章最后

配置upstream

在upstream里,配置转发请求所指向的服务器IP地址和端口号,对应的IP和端口号就是,访问你在B,C电脑上部署的网站的时候,所要输入的IP和端口号,myservers是你自己随便取的名字,后面配置跳转地址的时候你会用到。

upstream myservers{
        server 10.151.197.185:5000;#B服务器网站的地址
        server 10.151.197.79:5000;#C服务器网站的地址
    }

比如你访问B服务器上部署的网站时,在地址栏里输入http://10.151.197.185:5000,那么这里就填server 10.151.197.185:5000

配置server

1.listen就写80端口就行了,是默认配置
2.server_name不清楚的话就写localhost,这样写比去乱猜各种IP更保险
3.还要再配置一个location,location里面只用配置一个proxy_pass参数就行了,别的都有默认值,乱配的话反而容易出问题。

location 里面proxy_pass的http链接,对应的是上面配置的upstream myservers的名字,照抄下来就好了

location / {
            proxy_pass http://myservers;
            #proxy_set_header    Host  $host;#选择性配置
        }

如果只配一个proxy_pass参数后,转发还是有问题,网上建议再配置一个参数:proxy_set_header    Host  $host;
反正我是没有配置也是正常的。

所以server内部完整的配置就是这样的:

server {
         listen       80;
        server_name  localhost;

        location / {
            proxy_pass http://myservers;
            #proxy_set_header    Host  $host;#选择性配置
        }
    }

如果你没有特殊的需求,到这里负载均衡就配置完成了。
测试一下,找一个浏览器,输入A电脑(部署了Nginx的电脑)的IP地址,如http://10.17.206.41/。在配置好负载均衡前,浏览器显示的是Nginx的欢迎界面。当你配置好之后,此刻显示的就是部署在B,C两台电脑(负载机)上的网站页面了。

避坑指南

部署Nginx过程本身是很简单的,但是里面有一个坑,就是你要找到真正的Nginx配置文件的路径,我就是一开始因为找到了一个假的路径,配置了一天没配好。

你可能会在网上看到各种教程,给了你各种路径,记得如果配置后没有效果,就找找看是不是nginx的配置文件在别的路径上。你可能配置了个假路径。

之前作者就在/etc/nginx/nginx.conf这个路径下配置了很久,都没有效果,最后才找到了真正的文件路径:/usr/local/nginx/conf,耗时大约一天时间。

剩下的转发策略,灾备功能,多服务器什么的就可以按照网上慢慢配置了。

另一篇完整安装Nginx的文章链接如下:

从零开始Linux服务器部署.Net Core + Nginx + Supervisor 项目过程详解


 

你可能感兴趣的:(小技术_Linux)