nginx 转发及负载均衡

linux 下 nginx安装与配置 请参考:https://blog.csdn.net/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.csdn.net/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依次被访问:

nginx 转发及负载均衡_第1张图片
nginx 转发及负载均衡_第2张图片
nginx 转发及负载均衡_第3张图片
如果有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)