nginx 转发及负载均衡

nginx实现数据转发与负载均衡 nginx是一款第三方开源的主要用来做数据转发、反向代理、负载均衡的软件,目前在互联网和软件行业大量使用。本篇博客主要来实现nginx的数据转发和负载均衡的功能,最主要的是配置nginx的配置文件。       本文使用的服务器是阿里云centos6.8,nginx版本为1.6.2 。为了演示方便,可以在服务器上安装一个Tomcat。关于nginx在服务器上的安装,可以参考http://www.r 阅读详情

linux 下 nginx安装与配置 请参考:https://blog.youkuaiyun.com/M_wolf/article/details/82831850
请确保nginx已正确安装

一,nginx 实现转发

# 1,修改 nginx/conf 下的 nginx.conf 文件,最后的大括号内加入代码
include vhosts/*.conf;

# 2,在 conf 文件下新建 vhosts 文件夹
mkdir vhosts

# 3,进入 vhosts 目录,新建 test.conf,并键入以下代码
(我这里的需求是当访问127.0.0.1:3000/api时,转发到127.0.0.1:5757/api)
(可以根据你的需求自行更改)
server {
	# nginx 服务器监听3000端口
	listen 3000;
	# 监听的服务名称
	server_name 127.0.0.1;
	# 代理有可能导致请求头丢失,以下三行保证请求一定会有请求头
	proxy_set_header X-Forwarded-Host $host;
	proxy_set_header X-Forwarded-Server $host;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	# 转发
	location /api {
		proxy_pass		http://127.0.0.1:5757/api;
		add_header		Access-Control-Allow-Origin *;
	}
}

# 然后重启nginx,即可
nginx -s reload

# nginx 常用命令
# 启动
start nginx      # windows
nginx	      # linux

# 重启
nginx -s reload

# 停止
nginx -s stop

二,nginx 负载均衡

感谢博友的分享:https://blog.youkuaiyun.com/elio_liuheng/article/details/79372841

由于单台Tomcat服务器能够承受的并发量太小,所以开发环境下都要配置多台Tomcat服务器,形成分布式集群,这时也可以通过Nginx来实现。

三种常用的均衡算法:

均衡策略说明
轮询将所有请求依次发送给所有服务器
权重将所有请求按照权重的比例发送给各服务器
IP_HASH根据用户的访问IP将请求发送给固定的服务器

2.1,轮询
2.1.1 轮询配置

server {
	listen 8080;
	server_name localhost;
	proxy_set_header X-Forwarded-Host $host;
	proxy_set_header X-Forwarded-Server $host;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	location / {
		 #这里的“bal”应与已存在的某一策略名称一致
		proxy_pass http://bal;
	}
}
# 配置均衡策略,"bal"为策略名称
upstream bal {
	#轮询
	server  127.0.0.1:8081;
	server  127.0.0.1:8082;
	server  127.0.0.1:8083;
}

2.1.2 轮询测试

启动三台内容各不相同的Tomcat服务器,分别监听8081、8082、8083端口。在浏览器中访问服务器8080端口,多次刷新8080端口会发现三台Tomcat依次被访问:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果有Tomcat服务器意外宕机,Nginx能够检测Tomcat的状态,并只将请求发往能够正常接收请求的服务器(但是不排除能够接受却不能返回结果的服务器,这里可以通过worker_processes设置超时后转发到另一台服务器)。

2.2,权重

在地址后 加 weight 属性即可,数值越大,服务器获得的请求次数越多

# 修改2.1中的策略配置
upstream bal {
	server 127.0.0.1:8081 weight=6;
	server 127.0.0.1:8082 weight=1;
	server 127.0.0.1:8083 weight=3;
}

2.3,IP_HASH 负载均衡策略

IP_HASH负载均衡策略实现方式非常简单,在策略中加入ip_hash语句即可,一旦添加ip_hash语句,其他策略将不起作用(即使添加了weight属性也会按照IP_HASH策略分发请求)。

Nginx服务器将用户的IP进行hash运算获得映射值,将特定的IP与特定的服务器绑定,以后该IP的所有请求都会发往该服务器。

# 修改2.1中的策略配置
upstream bal {
	ip_hash;
	server 127.0.0.1:8081;
	server 127.0.0.1:8082;
	server 127.0.0.1:8083;
}

2.4,备用机机制

在某台服务器后添加backup属性即可将该服务器设置为备用机。Nginx一般情况下不会将请求发送给备用机,只有所有的非备用机全部宕机或全部忙碌,没有非备用机能够响应新的请求时,才会将请求发送给备用机,使其承担一部分压力。如果非备用机重启或压力减小,可以正常处理用户请求时,则备用机再次处于等待状态。

这里需要注意,备用机机制不能与IP_HASH负载均衡策略一起使用。

# 修改2.1中的策略配置
upstream bal {
	server 127.0.0.1:8081 weight=6;
	server 127.0.0.1:8082 weight=1 backup;
	server 127.0.0.1:8083 weight=3;
}
nginx实现负载均衡的代理转发 最近在部署客户环境时,遇到一个配置问题,需要做两个服务的整体代理转发,两台服务器上有完全的相同的两个后台服务,实现的是完全一样的功能,但是提供给第三方的接口,只能有一个服务器的IP地址,于是就想到了nginx代理做负载均衡代理。nginx服务在三个节点都部署,在nginx的配置文件中增加一个3305的端口来代理原本mysql的3306的服务,如下图。节点A:10.186.2.96 后台服务的端口20228。节点B:10.186.2.95 后台服务的端口20228。pxc集群的三个节点为。 阅读详情

相关推荐

nginx 本地web、配置代理转发、负载均衡配置

【本文以 Centos 7.0 64位系统下nginx 配置为例介绍】 目录 一、yum在线安装的nginx有如下几个重要目录和配置文件: 二、nginx 做http服务器 三、nginx 做代理转发 服务器 四、nginx 做负载均衡服务器 一、yum在线安装的nginx有如下几个重要目录和配置文件: /etc/nginx/nginx.conf nginx全局配置文...

xia701901的博客 494

Nginx 配置实现请求转发功能

1、找到配置文件 2、文件说明 #开启进程数 <=CPU数 worker_processes 1; #错误日志保存位置 #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #进程号保存文件 #pid logs/nginx.pid; #每个进程最大连接数(最大连接=连接数x进程数)每个worker允许同时产生多少个链接,默认1024 e

优快云_Admin0的博客 5万+

nginx使用详解:转发规则、负载均衡、server_name

nginx使用详解:转发规则、负载均衡、server_name

质量不太好的博客 1万+

Nginx 实现端口转发

Nginx 实现端口转发

qq_36306519的博客 2万+

【Cadence】Virtuoso@LayoutXL 差分电路版图同步修改

对于差分电路,器件和部分走线通常是对称的,只需要画一半,另一半通过镜像操作完成。因此,需要对差分电路进行同步的修改,保证电路的差分对称性和正确的连接关系。然而,通常版图会经过多次修改,修改的部分可能在镜像的时候被遗漏。左边画了金属块,右边也出现了同步出现了金属块。进入group会有同步复制的提示。

乾巽的博客 3050

MQL5教程 01 MT5有关EA的操作、MetaEditor 工具栏主要功能

MQL5教程 01 MT5有关EA的操作、MetaEditor 工具栏主要功能

weixin_42830015的博客 3987

Nginx常用功能(配置转发)

Nginx常用功能(配置转发),简称反向代理!

小志的博客 2715

Claude Code Router 401错误修复

claude code router配置相关环境变量问题

如沐春风 6359

Nginx转发的原理和负载均衡

nginx转发原理和负载均衡

xiaomao_wxj的博客 5036

SAP公司间采购后台配置及前台操作详解

公司间采购后台配置及前台操作详解 SAP 实施中公司间交易几乎每个项目都会有此业务需求,比如内地很多公司都会在香港设置贸易型子公司。通过香港公司接单,然后转内地公司生产,或内地公司通过香港公司采购进口原材料,这些业务必然会涉及到公司间交易,下面我将详细说明下SAP是如何实现这种业务场景的,供大家参考。 配置前必须前台先创建公司间供应商主数据和客户主数据 1. 创建相应的客户主数据 功能说明 公司间...

weixin_40672823的博客 1万+

基于任务的功能磁共振成像的连接性分析

虽然这种方法通过减少偶然只选择特异性代表的可能性来改善可推广性,但类别内和类别间的变异性变得更难控制(例如,"鸟类"可能是一个比"车辆"更加/不那么同质的类别),并且可能会出现关于这些预定义类别是否是现实世界实体的有意义划分的担忧——尽管这个限制在某种程度上可以通过表征相似性分析来解决。特别是,海马单变量激活和语义认知区域(左下额回)中语义信息的表征强度之间的交互预测了项目的概念记忆,而海马单变量激活和视觉处理区域(腹内侧枕叶皮层)中视觉属性的表征强度之间的交互预测了图像样本的知觉记忆。

cc1609130201的博客 2231

nginx的转发和负载均衡

个人认为nginx这个工具很简单好用,我实在ubuntu16.04的环境下使用的,linux操作系统下安装nginx都十分方便,由于本人只在ubuntu系统上使用过nginx,所以此篇博客只针对ubuntu的环境。 Ubuntu安装nginx sudo apt-get update sudo apt-get install nginx nginx的默认安装路径在etc下,使用nginx做转...

枯叶的博客 861

数字IC后端实战:Innovus与ICC2中如何巧妙规避Filler1缺失引发的DRC问题?

本文针对数字IC后端设计中工艺厂不提供最小填充单元Filler1的常见挑战,深入剖析了由此引发的DRC问题根源。详细对比了在Cadence Innovus和Synopsys ICC2两大主流PR工具中,如何通过设置单元间距约束来系统性规避物理缝隙,确保电源网络完整性与制造可靠性,为工程师提供了一套稳健的实战解决方案。

weixin_29303701的博客 306

Nginx负载均衡与转发

1、6种负载均衡策略 1、轮询 :默认方式 2、weight : 权重方式 3、ip_hash :依据ip分配方式 4、least_conn :最少连接方式 5、fair(第三方) :响应时间方式 6、url_hash(第三方) :依据URL分配方式 参数: 1、fail_timeout :与max_fails结合使用。 2、max_fails : 设置在fail_tim...

weixin_30693683的博客 212

mysql8.0安装及配置超详细教程_mysql-8.0.15-winx64

MySQL8.0配置教程, 全网最详,同时有本地mysql和小皮系统见另一篇

小诺言的博客 2万+

今日指数项目之实时流数据采集【六】

实时数据采集代码

Maynor的博客 2147

Nginx:深入探索反向代理、负载均衡与请求转发

Nginx作为高性能的Web服务器和反向代理,广泛应用于服务注册、发现、负载均衡和请求转发。其稳定性和灵活性使得Nginx成为构建可扩展、高可用Web应用的关键组件,通过简单配置即可实现复杂的网络架构需求。

Elusia-ForEver 1617

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Nginx中的负载均衡和请求转发配置

负载均衡和请求转发是Nginx常见应用的核心功能。负载均衡有助于在多台服务器上分配请求,提高系统性能,提高资源利用率;请求转发则是将客户端请求转发至一个或多个后端服务器。在本文中,我们将了解在Nginx中如何配置这两项功能。接下来的描述旨在易于理解,同时具有专业性和实用性。

高性价比服务器就选:蓝易云 647

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

nginx实现ip端口转发_Nginx负载均衡之端口转发 - 橙子柠檬's Blog

Nginx负载均衡之端口转发文章主要介绍用Nginx来进行流量转发和负载均衡,它支持UDP这一点弥补了HaProxy的不足。 并且Nginx支持插件扩展,可以实现更丰富的负载均衡功能。建议使用docker来部署Nginx,优点是快捷方便,且适合有洁癖的同学。 不过缺点是不方便自定义Nginx模块。Nginx配置如下usernginx;worker_processes1;events{wo...

weixin_34505326的博客 759

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

nginx静态资源转发及负载均衡部署

1.静态资源转发。 修改nginx配置文件, server { listen 8765; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { ...

qq_39027055的博客 3771

nginx 端口转发_基于Docker方式使用Nginx实现负载均衡

1.简介参考: https://www.cnblogs.com/diantong/p/11208508.html当在基于微服务架构开发项目时,我们一般都会通过网关去将请求转发到具体的服务上,为了增加网关的高可用,一般会配置多个网关。如图所示: 我们知道,不同的网关会有不同的端口和ip,当我们去访问不同的网关时,需要切换不同的ip和端口。这不管是对开发人员还是用户都是不合理的。因此我们就需...

weixin_39664456的博客 540

Nginx实现端口转发与负载均衡配置

注:这个也要改,不能跟另外一个tomcat的shutdown这个端口冲突。前言:当我们的软件体系结构较为庞大的时候,访问量往往是巨大的,所以我们这里可以使用nginx的均衡负载。分别在两个tomcat的webapp\pic目录命名同名的一张图片p1.jpg,但图片内容不同。目的:将nginx的8080转发到tomcat的8082端口上进行访问。1、首先更改nginx.conf配置文件。1、首先启动两个tomcat或nginx。

weixin_54227009的博客 1914

Nginx转发socket和负载均衡

1.socket转发 这边遇到一个坑:就是不能把配置写入http下,如图 图中配的upstream socket 里面的两个server做的就是负载; 参考官方文档遇到深坑,官方文档给的是这个: 没玩转。图一中的负载有缺陷,只能默认跳转到第一个服务器,这个bug希望有大佬能帮到,后期也会抽时间搞定! 以下是Nginx转发http和负载均衡:https://blog.youkuaiyun.com/wang2...

wang20y8的博客 1560

nginx负载均衡转发https

A服务器做负载转发到 B,C两台服务器 ; 这时候要添加https域名,则以下是A服务器的nginx配置 upstream backend { server ip; server ip2;} server { listen 80; listen 443 ssl; server_name localhost; #这个注释掉才能访问http...

aiyi5316的博客 636

nginx自定义负载均衡_端口转发——webhttp配置nginx.conf

user www www; worker_processes auto; error_log /alidata/log/nginx/error.log crit; pid /alidata/server/nginx/logs/nginx.pid; #Specifies the value for maximum file descriptors that can be o...

明耀的博客 1133

nginx配置https转发和负载均衡(亲测可用)

业务场景: 对外提供服务,通过域名解析到两台nginx然后转发到业务系统。 说明: 我有两台阿里云服务器,上面部署了nginx,jdk,业务系统,mysql和redis都是在阿里云上买的,所以在这两台服务上不需要部署mysql和redis,若需要部署可以参考我之前的博客,都是实操,亲测可用的! 1.找运维申请域名 申请外网域名和LB(比如域名为a.com) LB的443端口转到服务器 业务服务器1、业务服务器2的80端口 2.配置nginx.conf进行转发到业务服务, 由于我的请求为https,所以只关心

hancc_824的博客 2608
上一篇: python踩坑笔记 - Anaconda 介绍及安装
下一篇: Django - uwsgi +nginx进行项目部署
来自星星的马
博客等级 码龄10年 23粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值