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 反向代理之 proxy_pass的实现
Mar 31 Servers
nginx反向代理时如何保持长连接
Mar 31 Servers
nginx配置文件使用环境变量的操作方法
Jun 02 Servers
详解Nginx 被动检查服务器的存活状态
Oct 16 Servers
zabbix自定义监控nginx状态实现过程
Nov 01 Servers
Linux安装apache服务器的配置过程
Nov 27 Servers
详解使用内网穿透工具Ngrok代理本地服务
Mar 31 Servers
Dashboard管理Kubernetes集群与API访问配置
Apr 01 Servers
使用 Docker Compose 构建复杂的多容器App
Apr 30 Servers
排查Tomcat进程假死的问题
May 06 Servers
永中文档在线转换预览基于nginx配置部署方案
Jun 10 Servers
详解apache编译安装httpd-2.4.54及三种风格的init程序特点和区别
Jul 15 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
杏林同学录(八)
2006/10/09 PHP
PHP 采集心得技巧
2009/05/15 PHP
PHP中常用的字符串格式化函数总结
2014/11/19 PHP
标准PHP的AES加密算法类
2015/03/12 PHP
php打乱数组二维数组多维数组的简单实例
2016/06/17 PHP
Laravel 5.5官方推荐的Nginx配置学习教程
2017/10/06 PHP
laravel 数据迁移与 Eloquent ORM的实现方法
2019/04/12 PHP
Laravel 类和接口注入相关的代码
2019/10/15 PHP
CL vs ForZe BO5 第二场 2.13
2021/03/10 DOTA
jQuery实现强制cookie过期方法汇总
2015/05/22 Javascript
举例详解Python中smtplib模块处理电子邮件的使用
2015/06/24 Javascript
理解javascript中的原型和原型链
2015/07/30 Javascript
JavaScript设计模式经典之工厂模式
2016/02/24 Javascript
原生js封装二级城市下拉列表的实现代码
2016/06/16 Javascript
jQuery+json实现动态创建复杂表格table的方法
2016/10/25 Javascript
jQuery实现立体式数字滚动条增加效果
2016/12/21 Javascript
基于原生js运动方式关键点的总结(推荐)
2017/10/01 Javascript
Angular项目从新建、打包到nginx部署全过程记录
2017/12/09 Javascript
vue代理和跨域问题的解决
2018/07/18 Javascript
微信小程序实现的图片保存功能示例
2019/04/24 Javascript
解决element-ui的下拉框有值却无法选中的情况
2020/11/07 Javascript
原生JavaScript实现进度条
2021/02/19 Javascript
[02:27]《DAC最前线》之附加赛征程
2015/01/29 DOTA
在Python的setuptools框架下生成egg的教程
2015/04/13 Python
Python爬取qq空间说说的实例代码
2018/08/17 Python
树莓派+摄像头实现对移动物体的检测
2019/06/22 Python
Python类中方法getitem和getattr详解
2019/08/30 Python
Python利用for循环打印星号三角形的案例
2020/04/12 Python
Python3.8安装Pygame教程步骤详解
2020/08/14 Python
护士辞职信范文
2014/01/19 职场文书
质量主管工作职责
2014/09/26 职场文书
新婚姻法离婚协议书范文
2014/11/30 职场文书
2015清明节祭奠英烈寄语大全
2015/03/04 职场文书
公司出差管理制度范本
2015/08/05 职场文书
php修改word的实例方法
2021/11/17 PHP
动作冒险《Hell Is Us》将采用虚幻5 消灭怪物探索王国
2022/04/13 其他游戏