先发一个完整的配置,这是一个最精简的配置,仅仅完成以下配置后,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里,配置转发请求所指向的服务器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
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 项目过程详解