为了测试效果,需要先在两台Tomcat服务器的webapps目录下创建一个文件夹test和一个文件test.html,并启动两台Tomcat。
编辑nginx.conf,修改server结点,修改后的效果。
# 添加一个upstream用于负载均衡
upstream myserver {
server 127.0.0.1:8080;
server 127.0.0.1:9090;
}
server {
listen 80;
server_name 192.168.0.123;
#charset koi8-r;
#access_log logs/host.access.log main;
# proxy_pass指向myserver
location / {
proxy_pass http://myserver;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
通过浏览器访问http://192.168.0.123/test/test.html,可以看到请求在8080和9090服务器之间来回切换。
Nginx的负载均衡支持多种分配策略:
- 轮询(默认)
不停的在myserver指向的server之间来回切换,如果有服务挂掉了,自动跳过这台服务 - 根据权重
在server后面带上“weight=权重值”实现按权重分配请求 - ip_hash
根据客每个请求的访问IP,计算出后端的一个服务器,对同一个IP,每次请求都发送到这一台机器上,可以解决session不共享的问题,在upstream里加上一句“ip_hash”即可 - fair(需要第三方模块)
按照后端服务器的响应时间来分配服务,响应时间短的优先分配,只需要在upstream中加一个fair即可