- 先上一个前端版本,同一份打包编译后的文件,分别部署到one和two.
- 因为我只有一台服务器,所以这里通过端口进行演示: one对应端口91,two对应端口92.
- 通过upstream nginxlbdemo进行负载配置.
- 最后通过proxy_pass反向代理 upstream.
- 如果有修改nginx的配置文件,修改完毕后记得
nginx -s reload
nginx-lb.conf
upstream nginxlbdemo{
server 127.0.0.1:91;
server 127.0.0.1:92;
}
server {
listen 90;
location / {
proxy_pass http://nginxlbdemo;
}
}
server {
listen 91;
root /usr/local/aehyok/nginx-lb/one;
index index.html index.htm;
if ($request_method = 'OPTIONS') {
return 204;
}
location / {
try_files $uri $uri/ = 404;
}
}
server {
listen 92;
root /usr/local/aehyok/nginx-lb/two;
index index.html index.htm;
if ($request_method = 'OPTIONS') {
return 204;
}
location / {
try_files $uri $uri/ = 404;
}
}
部署完毕后,通过电脑查看,我没办法做测试,只能通过停掉91或者停掉92来访问90,都是没问题的。 那这里只好通过node开启后端服务来测试一下。
下面的代码算算是模拟91和92两个端口,相当于两台服务器,拷贝到linux服务器上,通过 node index.js运行起来
const http = require("http");
const port1 = 91
const server1 = http
.createServer(function (req, res) {
console.log(`Request: ${req.url}--port ${port1}`);
res.end(`hello world! - ${port1}`);
})
.listen(port1, "127.0.0.1");
server1.once("listening", () => {
console.log(`Server http://127.0.0.1:${port1}`);
});
const port2 = 92
const server2 = http
.createServer(function (req, res) {
console.log(`Request: ${req.url}--port ${port2}`);
res.end(`hello world! - ${port2}`);
})
.listen(port2, "127.0.0.1");
server2.once("listening", () => {
console.log(`Server http://127.0.0.1:${port2}`);
});
然后重新配置nginx-lb.conf,然后 nginx -s reload
upstream nginxlbdemo{
server 127.0.0.1:91;
server 127.0.0.1:92;
}
server {
listen 90;
location / {
proxy_pass http://nginxlbdemo;
}
}
然后通过http://139.159.245.209:90,你可以不断的刷新,就可以看到node 后台的请求日志 91和92端口在不停的切换
- 默认轮询 nginx默认就是轮询,其权重默认都是1,服务器请求的顺序: 第1个请求 91端口 第2个请求 92端口 第3个请求 91端口 第4个请求 92端口 第5个请求 91端口 第6个请求 92端口 第7个请求 91端口 第8个请求 92端口 ....
upstream nginxlbdemo{
server 127.0.0.1:91;
server 127.0.0.1:92;
}
- 加权轮询 nginx根据配置的权重大小而分发给对应服务器对应权重 数量的其你,其权重默认都是1,服务器请求的顺序: 第1个请求 91端口 第2个请求 92端口 第3个请求 92端口 第4个请求 91端口 第5个请求 92端口 第6个请求 92端口 第7个请求 91端口 第8个请求 92端口 第9个请求 93端口
upstream nginxlbdemo{
server 127.0.0.1:91 weight=1;
server 127.0.0.1:92 weight=2;
}
- ip_hash nginx 会让相同的客户端ip请求相同的服务器。
upstream nginxlbdemo{
ip_hash;
server 127.0.0.1:91;
server 127.0.0.1:92;
}
- 热备 开始时只会访问91端口,如果91端口服务器发生故障,才会开启第二台服务器给提供服务。
upstream nginxlbdemo{
ip_hash;
server 127.0.0.1:91;
server 127.0.0.1:92 backup;
}