Nginx 中实现反向代理

2023-01-12 12:13:56 阅读:1487 评论:0 点赞:0
所属分类: Nginx

一、什么是反向代理

反向代理就像现在流行的买菜APP,我们只需要购买我们要商品,而我们并不知道买给我们菜的商家是谁。
而正向代理就像我们现在常用的科学上网的APP一样的道理,也就是主动和被动的区别。
3ba2a3f7-1e77-4127-9be4-06bb4bd43e92

隧道式代理
请求和响应都必须经过代理服务器,缺点就是高流量下容易堵塞。
LVS 就解决了这个缺点,请求通过代理服务器转发到应用服务器,应用服务器把响应结果直接返回给我们的客户端,不需要将响应数据从代理服务器中转。

二、反向代理应用场景

1、通过 nginx 代理请求,将中转到具体的应用服务器。
2、基于 URL 重定向到不同的业务服务器
3、静态资源服务器

三、负载均衡器

将不同请求根据不同的算法均衡的分配到我们的业务服务器集群,从而降低某个别服务器的负载。

负载均衡算法:
1、轮询(轮着将请求分发给业务服务器)
2、IP 哈希

重试机制
当请求某台业务服务器时不能正常处理,就会触发重试机制,马上将请求转发到另一台业务服务器,保障高可用。

四、配置实现

4.1 代理配置

nginx 中配置反向代理的命令关键字为:proxy_pass <代理地址>, 它是配置在 location 下面的。

# 代理到某个域名地址
proxy_pass http://www.baidu.com;

# 代理到某个IP地址
proxy_pass http://192.168.1.5;

温馨提示

proxy_pass 的作用类似于 root,但是只能一个生效。

4.2 负载均衡配置——反向代理多个server

upstream httpds {
	server 192.168.1.5:80;
	server 192.168.1.6:80;
}

server {
	# ...
	location / {
		proxy_pass http://httpds;
	}
}

温馨提示

upstreamserver 是在同一级。

权重配置
权重的目的就是设置分配请求的比例,权重越大分配的请求就越多。

upstream httpds {
	server 192.168.1.5:80 weight=8;
	server 192.168.1.6:80 weight=1;
}

标记某台设备不参与负载均衡

upstream httpds {
	server 192.168.1.5:80 weight=8 down;
	server 192.168.1.6:80 weight=1;
}

标记某台服务器为备用机器
正常情况不会用到这台服务器,只要当其他服务器死掉,才会用到这个backup配置。

upstream httpds {
	server 192.168.1.5:80 weight=8 down;
	server 192.168.1.6:80 weight=1;
	server 192.168.1.7:80 weight=1 backup;
}

轮询的缺点
无法保持回话状态,因为客户端可能会随机分配到不同的应用服务器。

ip_hash
根据客户端IP hash转发到同一台服务器,但是现在客户端IP经常变换,不常用。

least_conn
最少连接访问,将请求分配给相对空闲的服务。

url_hash
需要第三方插件支持,定向流量转发,根据请求地址 hash 后转发到应用服务器。适用于固定资源不在同一服务器的情况。

fair
需要第三方插件,根据响应时间转发请求(会导致流量倾斜)

标签: 反向代理

永不言弃

职业:后端开发工程师
学校:重庆师范大学
城市:重庆
文章:169
好吧,不知道说点什么...

登录逐梦笔记

注册逐梦笔记

已有账号?