Nginx配置之实现多台服务器负载均衡


Posted in Servers onAugust 02, 2021

Nginx负载均衡服务器: IP:192.168.0.4(Nginx-Server)

Web服务器列表:

Web1: 192.168.0.5(Nginx-Node1/Nginx-Web1)

Web2:192.168.0.7(Nginx-Node2/Nginx-Web2)

实现目的:用户访问Nginx-Server时,通过Nginx负载均衡到Web1和Web2服务器。

Nginx负载均衡服务器的nginx.conf

配置注释如下:

events
{
use epoll;
worker_connections 65535;
}
http
{
##upstream的负载均衡,四种调度算法##
#调度算法1:轮询.每个请求按时间顺序逐一分配到不同的后端服务器,
#如果后端某台服务器宕机,故障系统被自动剔除,使用户访问不受影响
upstream webhost {
server 192.168.0.5:6666 ;
server 192.168.0.7:6666 ;
}
#调度算法2:weight(权重).可以根据机器配置定义权重.权重越高被分配到的几率越大
upstream webhost {
server 192.168.0.5:6666 weight=2;
server 192.168.0.7:6666 weight=3;
}
#调度算法3:ip_hash. 每个请求按访问IP的hash结果分配,这样来自同一个IP的访客固定访问一个后端服务器,
#有效解决了动态网页存在的session共享问题
upstream webhost {
ip_hash;
server 192.168.0.5:6666 ;
server 192.168.0.7:6666 ;
}
#调度算法4:url_hash(需安装第三方插件).此方法按访问url的hash结果来分配请求,
#使每个url定向到同一个后端服务器,可以进一步提高后端缓存服务器的效率.
#Nginx本身是不支持url_hash的,如果需要使用这种调度算法,必须安装Nginx 的hash软件包
upstream webhost {
server 192.168.0.5:6666 ;
server 192.168.0.7:6666 ;
hash $request_uri;
}
#调度算法5:fair(需安装第三方插件).这是比上面两个更加智能的负载均衡算法.
#此种算法可以依据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间来分配请求,
#响应时间短的优先分配.Nginx本身是不支持fair的,如果需要使用这种调度算法,必须下载Nginx的upstream_fair模块

#虚拟主机的配置(采用调度算法3:ip_hash)
server
{
listen 80;
server_name mongo.demo.com;
#对 “/” 启用反向代理
location / {
proxy_pass http://webhost;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
#后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#以下是一些反向代理的配置,可选.
proxy_set_header Host $host;
client_max_body_size 10m; #允许客户端请求的最大单文件字节数
client_body_buffer_size 128k; #缓冲区代理缓冲用户端请求的最大字节数,
proxy_connect_timeout 90; #nginx跟后端服务器连接超时时间(代理连接超时)
proxy_send_timeout 90; #后端服务器数据回传时间(代理发送超时)
proxy_read_timeout 90; #连接成功后,后端服务器响应时间(代理接收超时)
proxy_buffer_size 4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小
proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k以下的设置
proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)
proxy_temp_file_write_size 64k;
#设定缓存文件夹大小,大于这个值,将从upstream服务器传
}
}
}
配置 192.168.0.4(Nginx-Server)

创建文件夹准备存放配置文件

$ mkdir -p /opt/confs
$ vim /opt/confs/nginx.conf
events
{
use epoll;
worker_connections 65535;
}
http
{
upstream webhost {
ip_hash;
server 192.168.0.5:6666 ;
server 192.168.0.7:6666 ;
}
server
{
listen 80;
server_name mongo.demo.com;
location / {
proxy_pass http://webhost;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
}
}
启动负载均衡服务器192.168.0.4(Nginx-Server)

配置 192.168.0.5(Nginx-Node1/Nginx-Web1)

创建文件夹用于存放web页面

$ mkdir -p /opt/html
$ vim /opt/html/index.html
编辑内容如下:

The host is 192.168.0.5 - Node 1

启动192.168.0.5(Nginx-Node1/Nginx-Web1)

配置192.168.0.7(Nginx-Node2/Nginx-Web2)

创建文件夹用于存放web页面

$ mkdir -p /opt/html
$ vim /opt/html/index.html
编辑内容如下:

The host is 192.168.0.7 - Node 2

启动192.168.0.7(Nginx-Node2/Nginx-Web2)

到此这篇关于Nginx配置之实现多台服务器负载均衡的文章就介绍到这了,更多相关Nginx配置负载均衡内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Servers 相关文章推荐
Nginx开启Brotli压缩算法实现过程详解
Mar 31 Servers
nginx实现动静分离的方法示例
Nov 07 Servers
Nginx性能优化之Gzip压缩设置详解(最大程度提高页面打开速度)
Feb 12 Servers
关于Nginx中虚拟主机的一些冷门知识小结
Mar 03 Servers
Linux中如何安装并部署Redis
Apr 18 Servers
微信告警的zabbix监控系统 监控整个NGINX集群
Apr 18 Servers
tomcat正常启动但网页却无法访问的几种解决方法
May 06 Servers
Nginx的gzip相关介绍
May 11 Servers
Nginx利用Logrotate实现日志分割
May 20 Servers
zabbix配置nginx监控的实现
May 25 Servers
Linux在两个服务器直接传文件的操作方法
Aug 05 Servers
nginx sticky实现基于cookie负载均衡示例详解
Dec 24 Servers
nginx服务器的下载安装与使用详解
Aug 02 #Servers
nginx反向代理配置去除前缀案例教程
Jul 26 #Servers
nginx结合openssl实现https的方法
nginx配置虚拟主机的详细步骤
nginx的zabbix 5.0安装部署的方法步骤
nginx请求限制配置方法
使用goaccess分析nginx日志的详细方法
Jul 09 #Servers
You might like
PHP中让curl支持sock5的代码实例
2015/01/21 PHP
Zend Framework实现多文件上传功能实例
2016/03/21 PHP
PHP中addslashes与mysql_escape_string的区别分析
2016/04/25 PHP
基于php实现的验证码小程序
2016/12/13 PHP
浅谈thinkphp5 instance 的简单实现
2017/07/30 PHP
详解将数据从Laravel传送到vue的四种方式
2019/10/16 PHP
基于jQuery实现的水平和垂直居中的div窗口
2011/08/08 Javascript
JQuery实现绚丽的横向下拉菜单
2013/12/19 Javascript
Node.js安装教程和NPM包管理器使用详解
2014/08/16 Javascript
JavaScript window.location对象
2014/11/14 Javascript
vue.js2.0点击获取自己的属性和jquery方法
2018/02/23 jQuery
Vue SSR 组件加载问题
2018/05/02 Javascript
小程序开发踩坑:页面窗口定位(相对于浏览器定位)(推荐)
2019/04/25 Javascript
jQuery zTree树插件的使用教程
2019/08/16 jQuery
详解vue-video-player使用心得(兼容m3u8)
2019/08/23 Javascript
基于javascript原生判断DOM是否加载完毕
2020/10/14 Javascript
JavaScript实现网页计算器功能
2020/10/29 Javascript
JavaScript动态生成表格的示例
2020/11/02 Javascript
Python获取DLL和EXE文件版本号的方法
2015/03/10 Python
Python3 Random模块代码详解
2017/12/04 Python
教你用Python写安卓游戏外挂
2018/01/11 Python
Python数据处理numpy.median的实例讲解
2018/04/02 Python
Django 忘记管理员或忘记管理员密码 重设登录密码的方法
2018/05/30 Python
详解python之heapq模块及排序操作
2019/04/04 Python
Python利用requests模块下载图片实例代码
2019/08/12 Python
Python安装OpenCV的示例代码
2020/03/05 Python
Python在终端通过pip安装好包以后在Pycharm中依然无法使用的问题(三种解决方案)
2020/03/10 Python
详解CSS3选择器的使用方法汇总
2015/11/24 HTML / CSS
中国双语服务优势的在线购票及活动平台:247tickets
2018/10/26 全球购物
关于.NET, HTML的五个问题
2012/08/29 面试题
上海雨人软件技术开发有限公司测试题
2015/07/14 面试题
经理管理专业毕业自荐书范文
2014/02/12 职场文书
希特勒经典演讲稿
2014/05/19 职场文书
小学标准化建设汇报材料
2014/08/16 职场文书
2015初一年级组工作总结
2015/07/24 职场文书
正则表达式基础与常用验证表达式
2022/06/16 Javascript