Nginx+Tomcat实现反向代理与动静分离

 

1. 什么是动静分离

        所谓动静分离就是经过nginx(或apache等)来处理用户端请求的静态页面,tomcat(或weblogic)处理动态页面,从而达到动静页面访问时经过不一样的容器来处理。css

2. 为何作动静分离

         Nginx处理静态页面的效率远高于tomcat,全部咱们只让tomcat干本身擅长的事情,以事实说话,咱们经过ab进行对一个静态页面访问作压力测试。html

1) 作动静分离后nginx处理静态页面的压力测试:

# ab -n 1000 -c 200 http://10.10.11.91/index.htmlnginx

clip_p_w_picpath002

吞吐量为:1.2Mweb

2) 未作动静分离而是直接由tomcat处理同一个静态页面的压力测试:

# ab -n 1000 -c 200 http://10.10.11.91:8080/index.htmlapache

clip_p_w_picpath004

吞吐量为:0.08Mtomcat

经过上面的压力测试结果,全部请求由tomcat处理与动静分离相比毫无疑问动静分离才是王道!jsp

3. 动静分离逻辑图

clip_p_w_picpath006

4. Nginx与tomcat部署

由一键安装middleware_install_v.1.0.3.tar.gz进行部署,这里再也不赘述。ide

5. Nginx配置

nginx须要配置的地方以下:测试

 

server {spa

listen 80;

server_name www.test.com 10.10.11.91;

index index.html index.htm index.jsp index.do

root /usr/local/nginx/html; #由nginx处理静态页面

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {

expires 30d;

}

location ~ .*\.(js|css)?$ {

expires 1h;

}

location ~ (\.jsp)|(\.do)$ {

proxy_pass http://10.10.11.91:8080; #以jsp和do请求的页面通过nginx反向代理由tomcat处理

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;

client_max_body_size 10m;

client_body_buffer_size 128k;

proxy_connect_timeout 90;

proxy_send_timeout 90;

proxy_read_timeout 90;

proxy_buffer_size 4k;

proxy_buffers 4 32k;

proxy_busy_buffers_size 64k;

proxy_temp_file_write_size 64k;

}

}

6. 验证动静分离的效果

我在tomcat的根目录ROOT下创建了index.html、test.jsp、test.do三个测试文件:

clip_p_w_picpath007

我在nginx的根目录/usr/local/nginx/html下创建测试首页index.html

直接访问tomcat的静态首页:

clip_p_w_picpath008

直接访问tomcat的jsp页面:

clip_p_w_picpath009

直接访问tomcat的.do页面:

clip_p_w_picpath010

如今进行经过nginx进行访问:

Nginx的首页:

clip_p_w_picpath011

查看nginx处理jsp页面的请求: 

查看nginx处理.do页面的请求:

clip_p_w_picpath013

至此,nginx与tomcat已实现了反向代理动静分离。

相关文章
相关标签/搜索