Nginx之负载均衡配置
1. 负载均衡基本配置
1. 配置upstream
upstream www.jinshengyuan.*** {
server 192.168.31.100:8080;
server 192.168.31.101:8081;
}
2. 配置location
location可以配多个
location /demo {
proxy_pass http://www.jinshengyuan.***;
}
<!--
demo:表示部署到服务器中的contenxPath,如tomcat的webapp目录的demo目录;
www.jinshengyuan.***一定要与upstream后面的保持一致
-->
3. 访问
打开浏览器,输入http://www.jinshengyuan.***进行访问
2. Nginx常用负载均衡策略
1. 轮询(默认)
每个请求轮流分配到不同的服务器,如果某一台服务器宕掉,将自动剔除已经宕掉的服务器而转发到运行正常的服务器。
2. 权重
每个请求按一定的比例分发到不同的服务器,weight值越大访问的几率越大,用于后端服务器性能不均的情况
upstream www.jinshengyuan.*** {
server 192.168.31.100:8080 weight=1;
server 192.168.31.101:8081 weight=3;
}
3. ip_hash策略
ip_hash也叫IP绑定,每个请求按访问的IP的hash值分配,这样每个访问客户端会固定访问一个后端服务器,可以解决会话Session共享的问题;
如hash(“192.168.31.110”) %2 = 0 或1,这种规则
这种策略在IP不变的情况下会一直访问其中的某一台服务器,而非在各个服务器中来回切换
配置如下:
upstream www.jinshengyuan.*** {
server 192.168.31.100:8080;
server 192.168.31.101:8081;
ip_hash; # IP绑定
}
4. 最少连接策略
web请求会被转发大连接数最少的服务器上;
配置如下:
upstream www.jinshengyuan.*** {
server 192.168.31.100:8080;
server 192.168.31.101:8081;
least_conn; # 最少连接策略
}
5. 负载均衡其他几个配置
-
backup
其他所有的非backup机器down的时候,才请求backup机器
如下
upstream www.jinshengyuan.*** {
server 192.168.31.100:8080;
server 192.168.31.101:8081 backup; # 备用服务器,其他服务器宕机了才会请求此服务器
}
-
down
down表示当前的sever是down的状态,不参与负载均衡
如下:
upstream www.jinshengyuan.*** {
server 192.168.31.100:8080;
server 192.168.31.101:8081 down; # 此服务不参与负载均衡
}
3. 静态代理
把所有静态资源的访问改为nginx,而不是访问tomcat,因为你滚下更擅长与静态资源的处理,性能更好,效率更高。
所以在实际应用中,我们将静态资源比如图片,css,html,js等交给nginx处理,而不是由tomcat处理。
1. 基于静态在一文件后缀的匹配
通过在nginx.conf配置文件中添加静态资源的location,比如:
当访问静态资源,则从D:/demo/static目录下获取(举例)
location ~.*\.(js|css|html|gif|jpg|png|swf|ioc|zip|txt|doc|docx|xls|pdf|xlsx|mp3|ppt|flv)$ {
root D:/demo/static;
}
~ 表示正则匹配,也就是后面的内容可以是正则表达式匹配;
第一个 . 表示任意字符;
***** 表示一个或多个字符;
\. 是转义字符,是后面这个点的转移字符;
| 表示或者
$ 表示结尾
2. 基于静态资源文件目录的匹配
将镜头在一放入D:/demo/static目录下,然后当用户访问时由nginx返回这些静态资源
location ~.*/(css|js|images){
root D:/demo/static;
}
4. 动静分离
nginx的负载均衡和静态代理结合在一起,可以实现动静分离,这是实际应用中常见的一种场景。
动静分离各司其职,专注于自己擅长的事情,充分利用了它们各自的优势,从而达到更高效合理的架构。
1. 动态资源
如jsp由tomcat或其他web服务器完成
2. 静态资源
如图片,css,js等由nginx服务器完成
3. 动静分离示例
Nginx在一台服务器上安装一份,可以拷贝为多个nginx.conf文件启动多个Nginx,每个Nginx配置文件不一样即可。