Nginx+Tomcat 配置动静分离及负载均衡
Nginx+Tomcat 配置动静分离及负载均衡
-
为什么要用nginx+tomcat动静分离
主要是nginx处理静态页面的效率远高于tomcat的处理能力,如果tomcat的请求量为1000次,则nginx的请求量为6000次,tomcat每秒的吞吐量为0.6M,nginx的每秒吞吐量为3.6M,可以说,nginx处理静态资源的能力是tomcat处理能力的6倍,优势可见一斑。 -
动静分离原理
服务端接收来自客户端的请求中,有一部分是静态资源的请求,例如html,css,js和图片资源等等,有一部分是动态数据的请求。因为tomcat处理静态资源的速度比较慢,所以我们可以考虑把所有静态资源独立开来,交给处理静态资源更快的服务器例如nginx处理,而把动态请求交给tomcat处理。
我们在机器上同时安装了nginx和tomcat(或者分两台机器做),把所有的静态资源都放置在nginx的webroot目录下面,把动态请求的程序都放在tomcat的webroot目录下面,当客户端访问服务端的时候,如果是静态资源的请求,就直接到nginx的webroot目录下面获取资源,如果是动态资源的请求,nginx利用反向代理的原理,把请求转发给tomcat进行处理,这样就实现了动静分离,提高了服务器处理请求的性能。
配置实例
环境说明:
nginx反向代理服务器的ip是192.168.32.125
存放静态资源的服务器IP是192.168.32.130,部署了两个nignx,端口分别是80和81
存放动态资源的服务器IP是192.168.32.135,部署了两个tomcat,端口分别是8080和8081
#配置测试页面
#静态页面
[root@localhost ~]# cat /usr/local/nginx/html/index.html
nginx static page.
#动态页面
[root@localhost tomcat]# cat webapps/test/index.jsp
<html>
<head>
<title>test page</title>
</head>
<body>
<%
out.println("tomcat dynamic page.....8080");
%>
</body>
</html>
访问测试页面
配置nginx反向代理服务器
#http中配置
......
#gzip on;
upstream static {
server 192.168.32.130:80 weight=3;
server 192.168.32.130:81 weight=1;
}
upstream dynamic {
server 192.168.32.135:8080 weight=2;
server 192.168.32.135:8081 weight=1;
}
server {
listen 80;
server_name localtion;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
proxy_pass http://static;
}
location ~ \.(jsp|do)$ {
proxy_pass http://dynamic;
}
......
访问
刷新两次,又访问到了8081,确实实现了负载均衡