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 相关文章推荐
使用Apache的rewrite
Mar 09 Servers
Nginx tp3.2.3 404问题解决方案
Mar 31 Servers
nginx location优先级的深入讲解
Mar 31 Servers
Nginx+Windows搭建域名访问环境的操作方法
Mar 17 Servers
Nginx工作模式及代理配置的使用细节
Mar 21 Servers
了解Kubernetes中的Service和Endpoint
Apr 01 Servers
Nginx的gzip相关介绍
May 11 Servers
nginx 添加http_stub_status_module模块
May 25 Servers
Python安装及建立虚拟环境的完整步骤
Jun 25 Servers
GPU服务器的多用户配置方法
Jul 07 Servers
Nginx文件已经存在全局反向代理问题排查记录
Jul 15 Servers
Nginx如何获取自定义请求header头和URL参数详解
Jul 23 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中HTTP方式下的Gzip压缩传输方法举偶
2007/02/15 PHP
使ecshop模板中可引用常量的实现方法
2011/06/02 PHP
PHP数据流应用的一个简单实例
2012/09/14 PHP
WordPress中访客登陆实现邮件提醒的PHP脚本实例分享
2015/12/14 PHP
PHP创建/删除/复制文件夹、文件
2016/05/03 PHP
Thinkphp3.2.3整合phpqrcode生成带logo的二维码
2016/07/21 PHP
php闭包中使用use声明变量的作用域实例分析
2018/08/09 PHP
PHP正则表达式函数preg_replace用法实例分析
2020/06/04 PHP
限制文本框输入N个字符的js代码
2010/05/13 Javascript
js中的referrer返回上一页使用介绍
2013/09/26 Javascript
jquery访问ashx文件示例代码
2014/08/11 Javascript
pc加载更多功能和移动端下拉刷新加载数据
2016/11/07 Javascript
Bootstrap基本插件学习笔记之模态对话框(16)
2016/12/08 Javascript
Servlet3.0与纯javascript通过Ajax交互的实例详解
2018/03/18 Javascript
浅谈Vue初学之props的驼峰命名
2018/07/19 Javascript
15个顶级开源JavaScript框架和库
2018/10/10 Javascript
vue和better-scroll实现列表左右联动效果详解
2019/04/29 Javascript
layer实现登录弹框,登录成功后关闭弹框并调用父窗口的例子
2019/09/11 Javascript
Vue2.4+新增属性.sync、$attrs、$listeners的具体使用
2020/03/08 Javascript
vue + el-form 实现的多层循环表单验证
2020/11/25 Vue.js
安装Python和pygame及相应的环境变量配置(图文教程)
2017/06/04 Python
Python 实现数据结构-堆栈和队列的操作方法
2019/07/17 Python
Python 使用指定的网卡发送HTTP请求的实例
2019/08/21 Python
tensorflow实现测试时读取任意指定的check point的网络参数
2020/01/21 Python
在 Python 中使用 MQTT的方法
2020/08/18 Python
如何避免常见的6种HTML5错误用法
2017/11/06 HTML / CSS
荷兰度假屋租赁网站:Aan Zee
2020/02/28 全球购物
英国豪华家具和家居用品购物网站:Teddy Beau
2020/10/12 全球购物
小学音乐教学反思
2014/02/05 职场文书
班级道德讲堂实施方案
2014/02/24 职场文书
经典禁毒标语
2014/06/16 职场文书
出生证明格式
2015/06/15 职场文书
小学班主任研修日志
2015/11/13 职场文书
教你用Java Swing实现自助取款机系统
2021/06/11 Java/Android
Apache Linkis 中间件架构及快速安装步骤
2022/03/16 Servers
Python经常使用的一些内置函数
2022/04/11 Python