负载均衡的作用:在多个服务器上部署同一个web项目,nginx会将用户的请求随机(可自定义)分发到其中一个web服务器,当其中任意一个或多个web服务器宕机时,不影响用户的正常访问。
基本网络构架:
步骤:
1、到http://nginx.org/ 下载好windows的zip包,解压后直接运行 nginx.exe,窗口会一闪而过,但在任务管理器可看到两个进程,我们现在访问http://localhost,会显示如下内容。这是因为ngnix启动后,默认会监听本机的80端口,然后将该端口下的所有访问都转到了 html/index.html。
Welcome to nginx!
2、配置文件说明
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
}
service : 一个配置实例
listen: 当前这个实例监听本机的端口号,这个在所有server中就是唯一的,不然一个端口被多个实例监听,nginx就不知该用哪个处理了。
server_name:给当前实例定义一个名称
location / : 监听当前端口所有请求
root : location 请求对应的本机文件目录,html 表示所有的请求都将以html文件夹做为根目录.这个配置最常用于缓存静态文件时使用,如js / css / image等
index: 默认的首页,如果不存在index.html ,则显示index.htm
如果想让nginx监听到80端口访问时转到我们自己的tomcat服务器,只需将localtion / 修改为如下就可以了:
location / {
proxy_pass http://localhost:8080
}
这时我们再访问http://localhost ,则会显示如果页面了,而且任何功能都不会受影响:
3、两个web服务器负载均衡:
upstream local_tomcat {
# 这里是本机的第一个web服务器
server localhost:8080;
# 这里是本机的第二个web服务器
server localhost:9090;
#还可添加很多
}
server{location / {
proxy_pass http://local_tomcat;
}
#......其他省略
}
当访问http://localhost时,nginx会随机的跳转到8080与9090服务器。当8080服务器宕机时,9090会继续工作。如果想控制两个服务器的权重,比如 9090 服务器性能好,可以多处理一些请求,则可以如下配置权重
upstream local_tomcat {
server localhost:8080 weight=1;
server localhost:9999 weight=2;
}
这样在9090受访的机率会比8080多一倍。
3、静态文件,这个好像conf.xml有现成的配置,只要改一下就可以,如下对图片的配置
#location ~ \.(png|jpg|bmp)$ {
root image;
}
所有png 、 jpg 、 bmp 的请求都会直接去访客根目录下的image文件夹,当然也可以使用绝对路径。
4、还有待学习的地址
session如何处理,因为分发到不同的web服务器,session也需要在各个服务器上访问。好像这个可以做成无状态的session,这个在以后单独写文字进行探究。