Nginx+Tomcat负载均衡
安装及环境配置
- jre
http://blog.csdn.net/stsahana/article/details/52275785 - tomcat
http://blog.csdn.net/stsahana/article/details/52276341 - 配置多个tomcat
http://blog.csdn.net/stsahana/article/details/52288144 - nginx(ubuntu下)
- 安装:sudo apt-get insatll nginx
- 启动:server nginx start
- 停止:service nginx stop
- 查看运行状态:service nginx status
- 检查配置文件:nginx -t
- 服务运行中重新加载配置:nginx -s reload
- 添加Nginx服务自启动:chkconfig nginx on
负载均衡配置
启动nginx时,nginx会自动加载/etc/nginx/nginx.conf,而在nginx.conf的原代码中,会include /etc/nginx/conf.d/*.conf,我们的负载均衡就在这个文件下设置
新建tomcats.conf
vi /etc/nginx/conf.d/tomcats.conf
内容如下
#设定负载均衡的服务器列表
upstream tomcats {
#weigth参数表示权值,权值越高被分配到的几率越大
ip_hash;//保证同一用户访问同一服务器
server 192.168.0.251:8080 weight=1;//第一个
server 192.168.0.251:8081 weight=1;//第二个
server 192.168.0.251:8082 weight=1;//第三个
}
server {
listen 8800;
server_name webapp;
location / {
#设置主机头和客户端真实地址,以便服务器获取客户端真实IP
include /etc/nginx/proxy_params;//nginx1.11中的代理设置
proxy_buffering on;//启动缓存
#反向代理的地址
proxy_pass http://tomcats;
}
}
保存后重新加载配置:nginx -s reload
静态资源分离配置
vi /etc/nginx/conf.d/tomcats.conf
在location / 后添加如下内容,
#所有js,css相关的静态资源文件的请求由Nginx处理
location ~.*\.(js|css)$ {
root /var/www/html; #指定文件存放路径
expires 12h; #过期时间为12小时
}
#所有图片等多媒体相关静态资源文件的请求由Nginx处理
location ~.*\.(html|jpg|jpeg|png|bmp|gif|ico|mp3|mid|wma|mp4|swf|flv|rar|zip|txt|doc|ppt|xls|pdf)$ {
root /var/www/html; #指定文件路径
#过期7天,如果静态文件不怎么更新,过期可以设大一点,如果频繁更新,则可以设置得小一点。
expires 7d; #过期时间为7天
}
修改SELinux安全规则
如果访问Nginx时出现502 Bad Gateway错误,则可能是Nginx主机上的SELinux限制了其使用http访问权限引起的,输入命令setsebool -P httpd_can_network_connect 1 开启权限即可。
完整代码
etc/nginx/conf.d/tomcats.conf
#设定负载均衡的服务器列表
upstream tomcats {
#weigth参数表示权值,权值越高被分配到的几率越大
ip_hash;//保证同一用户访问同一服务器
server 192.168.0.251:8080 weight=1;//第一个
server 192.168.0.251:8081 weight=1;//第二个
server 192.168.0.251:8082 weight=1;//第三个
}
server {
listen 8800;
server_name webapp;
location / {
#设置主机头和客户端真实地址,以便服务器获取客户端真实IP
include /etc/nginx/proxy_params;//nginx1.11中的代理设置
proxy_buffering on;//启动缓存
#反向代理的地址
proxy_pass http://tomcats;
}
#所有js,css相关的静态资源文件的请求由Nginx处理
location ~.*\.(js|css)$ {
root /var/www/html; #指定文件存放路径
expires 12h; #过期时间为12小时
}
#所有图片等多媒体相关静态资源文件的请求由Nginx处理
location ~.*\.(html|jpg|jpeg|png|bmp|gif|ico|mp3|mid|wma|mp4|swf|flv|rar|zip|txt|doc|ppt|xls|pdf)$ {
root /var/www/html; #指定文件路径
#过期7天,如果静态文件不怎么更新,过期可以设大一点,如果频繁更新,则可以设置得小一些
expires 7d; #过期时间为7天
}
}
测试
如果nginx已经启动,先关闭
service nginx stop
再启动
service nginx start
在浏览器输入localhost:8800,如果在未设置ip_hash的情况下,多次刷新会访问到不同的tomcat,为了验证访问到的是不同的tomcat,可以修改tomcat下webapps/examples/index.html,使三个tomcat/example主页不同,这样多次访问到的localhost:8080/example主页将会不同。