目录
使用nodejs模拟多server测试nginx负载均衡
使用nodejs模拟多server测试nginx负载均衡
测试的Server
首先创建一个servers.js
的nodejs脚本文件,这个脚本文件将负责监听三个端口去模拟负载的WebServer服务器,然后启动node servers.js
。
var http = require('http');
function serve(ip, port) {
http.createServer(function (req, resp) {
resp.writeHead(200, {'Content-Type':'text/plain'});
resp.end("There's no place like " + ip + ":" + port + "\n");
}).listen(port, ip);
console.log('Server running at //' + ip + ':' + port + '/');
}
分别启动
// 模拟三台负载机器
serve('127.0.0.1', 9000);
serve('127.0.0.1', 9001);
serve('127.0.0.1', 9002);
nginx的负载配置
# 定义upstream的server,请求将会发送到app_example的负载配置里
upstream app_example {
# 使用最少连接的负载策略
least_conn;
server 127.0.0.1:9000; # nodejs server 1
server 127.0.0.1:9001; # nodejs server 2
server 127.0.0.1:9002; # nodejs server 3
}
server {
listen 80;
server_name example.com www.example.com;
access_log /var/log/nginx/example.com-access.log;
error_log /var/log/nginx/example.com-error.log error;
location = /favicon.ico { log_not_found off; access_log off; }
location = /robots.txt { log_not_found off; access_log off; }
# 搜索已存在的文件或目录,若不存在则跳转到@proxy的块里
# location / {
# try_files $uri $uri/ @proxy;
# }
# location @proxy {
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass //app_example; # 定义upstream的别名
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
配置域名
在上面配置了测试域名example.com和www.example.com,所以在本机测试需要在hosts文件中加上域名映射,如下:
127.0.0.1 example.com
127.0.0.1 www.example.com
模拟测试
使用浏览器打开 //www.example.com 或者 //example.com 进行测试,将会看见每次请求nginx将会分发请求到不同server中。
版权所有,本作品采用知识共享署名-非商业性使用 3.0 未本地化版本许可协议进行许可。转载请注明出处:https://www.wangjun.dev//2016/04/nodejs-nginx-loadblance/