Nginx 负载均衡
nginx用处
- 直接作为http server(代替tomcat,apache等服务器);
- 另外一个最主要的功能就是作为反向代理服务器实现负载均衡
环境
- nginx部署在windows上,另外两台tomcat,地址为
- nginx下载地址
http://nginx.org/en/download.html
- 两个tomcat分布部署在虚拟机上,假设他们的ip是
192.168.155.1:80
和192.168.155.2:80
,分别有路劲service1\index.html
和service2\index.html
,里面的内容只要好鉴别是哪个tomcat下的资源就行了
4.先可以启动tomcat,访问相应的地址试试,能不能访问
配置
针对不同请求 负载均衡
下载好nginx之后,修改
conf\nginx.conf
`
# ~表示根据正则匹配url,以下的效果是,当url包含service1,nginx会将请求给192.168.155.1:80处理
location ~ /service1/ {
proxy_pass http://192.168.155.1:80;
}
#当url包含service2,nginx会将请求给192.168.155.2:80处理
location ~ /service2/ {
proxy_pass http://192.168.155.2:80;
}
`
启动nginx,这也就实现了最简单的负载均衡
例如:请求
http://localhost/service1/index.html
,在nginx容器下没有service1/index.html
的路劲,nginx就是根据上面的配置,将请求交给http://192.168.155.1:80
处理
访问同一请求 负载均衡
即用户访问同一请求时,配置多台tomcat,由nginx随机将请求分给某一个tomcat
在nginx.conf的http模块中添加,服务器集群server cluster
`
upstream interestCluster {
server 192.168.155.1:80;
server 192.168.155.2:80;
}
`
在server模块中定义,负载均衡
`
location ~ /service1/ {
proxy_pass http://interestCluster ; #跟上面的集群名字一样
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
`
以上配置,到达的效果就是,当你访问
http://localhost/service1/index.html
,在nginx容器下没有service1/index.html
的路劲,nginx就是根据上面的配置,将请求交给http://192.168.155.1:80
或者时http://192.168.155.2:80
处理
以上配置两个tomcat均衡,你可以根据自己服务器硬件配置,来配置权重,继续修改nginx.conf
`
upstream interestCluster {
server 192.168.155.1:80;
server 192.168.155.2:80 weight=2;
}
`
即有三分之二的概率用到192.168.155.2,有三分之一的概率用到192.168.155.1