Nginx配置反向代理和负载均衡
Nginx是一个流行的Web容器,作为服务的入口,使用反向代理和负载均衡,达到隐藏和保护内部服务安全的作用,本文会描述Nginx反向代理和负载均衡的配置。
反向代理
在Nginx配置文件中使用 proxy_pass
配置反向代理。
server {
listen 80;
server_name www.scung.cn;# 服务器地址或绑定域名
location / {
proxy_pass http://localhost:5000;
}
}
上面的代码是一个最简单的反向代理配置,监听80端口,域名匹配www.scung.cn。
在 localtion
定义了 /
,在其中使用 proxy_pass
进行转发,这样所有流向 www.scung.cn 的流量就全部都转到了 localhost:5000 中。
负载均衡
在反向代理的基础上,发展出了负载均衡,即同时反向代理多个服务。使用 upstream
来配置负载均衡。
upstream mysvr {
server localhost:5000;
server localhost:6000;
}
server {
listen 80;
server_name www.scung.cn;# 服务器地址或绑定域名
location / {
proxy_pass http://mysvr;
}
}
使用 upstream
定义了一个对象 mysvr,在 proxy_pass
中使用即可实现负载均衡,同时将 www.scung.cn 的流量转发到 localhost:5000 和 localhost:6000 两个服务中。
在做负载均衡时,涉及到流量转发策略,Nginx提供了多种策略:轮询,加权轮询还有 ip_hash
。
轮询
默认配置即为轮询。
upstream mysvr {
server localhost:5000;
server localhost:6000;
}
加权轮询
在轮询的基础上使用 weight
实现权重比。
upstream mysvr {
server localhost:5000 weight=1;
server localhost:6000 weight=10;
}
ip_hash
在轮询基础之上使用 ip_hash
实现该策略。
upstream mysvr {
server localhost:5000;
server localhost:6000;
ip_hash;
}
除了上述三个配置外,Nginx还提供了一些其他的配置,比如使用 backup
来表示主从,只有在主服务无法请求时才会转发到该服务,还可以定义超时次数和失败次数实现特定的效果。