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 stream 配置代理(Nginx TCP/UDP 负载均衡)
Nov 17 Servers
CentOS下安装Jenkins的完整步骤
Apr 07 Servers
Consul在linux环境的集群部署
Apr 08 Servers
idea下配置tomcat避坑详解
Apr 12 Servers
tomcat下部署jenkins的方法
May 06 Servers
V Rising 服务器搭建图文教程
Jun 16 Servers
Windows server 2022创建创建林、域树、子域的步骤
Jun 25 Servers
Windows10安装Apache2.4的方法步骤
Jun 25 Servers
Windows Server 2016服务器用户管理及远程授权图文教程
Aug 14 Servers
zabbix如何添加监控主机和自定义监控项
Aug 14 Servers
服务器nginx权限被拒绝解决案例
Sep 23 Servers
ubuntu如何搭建vsftpd服务器
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 提取图片img标记中的任意属性的简单实例
2013/12/10 PHP
PHP zip扩展Linux下安装过程分享
2014/05/05 PHP
浅析ThinkPHP中execute和query方法的区别
2014/06/13 PHP
PHP中构造函数和析构函数解析
2014/10/10 PHP
PHP实现远程下载文件到本地
2015/05/17 PHP
php导出csv文件,可导出前导0实例代码
2016/11/16 PHP
php实现的mysqldb读写分离操作类示例
2017/02/07 PHP
基于php数组中的索引数组和关联数组详解
2018/03/12 PHP
Yii框架操作cookie与session的方法实例详解
2019/09/04 PHP
原型方法的不同写法居然会影响调试的解决方法
2007/03/08 Javascript
js/ajax跨越访问-jsonp的原理和实例(javascript和jquery实现代码)
2012/12/27 Javascript
ECMAScript5(ES5)中bind方法使用小结
2015/05/07 Javascript
JS+CSS实现大气的黑色首页导航菜单效果代码
2015/09/10 Javascript
跟我学习javascript的全局变量
2015/11/16 Javascript
JavaScript严格模式详解
2015/11/18 Javascript
jquery采用oop模式class类的使用示例
2016/01/22 Javascript
Javascript实现图片轮播效果(二)图片序列节点的控制实现
2016/02/17 Javascript
Nodejs学习item【入门手上】
2016/05/05 NodeJs
Angular1.x复杂指令实例详解
2017/03/01 Javascript
jackson解析json字符串,首字母大写会自动转为小写的方法
2017/12/22 Javascript
为vue-router懒加载时下载js的过程中添加loading提示避免无响应问题
2018/04/03 Javascript
解决vue-cli脚手架打包后vendor文件过大的问题
2018/09/27 Javascript
详解vuex状态管理模式
2018/11/01 Javascript
JavaScript错误处理操作实例详解
2019/01/04 Javascript
Vue如何实现监听组件原生事件
2020/07/03 Javascript
python共享引用(多个变量引用)示例代码
2013/12/04 Python
python查看FTP是否能连接成功的方法
2015/07/30 Python
Python中GIL的使用详解
2018/10/03 Python
关于numpy.where()函数 返回值的解释
2019/12/06 Python
PyCharm2020.1.1与Python3.7.7的安装教程图文详解
2020/08/07 Python
会计学自我鉴定
2014/02/06 职场文书
母亲节感恩活动记录
2014/03/16 职场文书
举起手来观后感
2015/06/09 职场文书
python编程学习使用管道Pipe编写优化代码
2021/11/20 Python
SpringCloud Function SpEL注入漏洞分析及环境搭建
2022/04/08 Java/Android
一文了解Java动态代理的原理及实现
2022/07/07 Java/Android