所谓的动静分离,就是将 Web 应用程序中静态和动态的内容分别放在不同的 Web 服务器上,有针对性的处理动态和静态内容,从而达到性能的提升。
由于Tomcat 在并发和静态资源处理的能力上较弱。动静分离就是其中一种方法,既然 Tomcat 处理静态资源的能力较弱,那就将静态资源的处理任务交给适合的软件,而让 Tomcat 专注于处理 JSP/Servlet 的请求。
对于静态资源处理的服务器软件,我们选择的是Nginx。它支持高并发,对静态资源处理的能力较强。
事实上,动静分离的方案很多,有人采用 Apache+Tomcat 的组合;也有人使用 Tomcat+Tomcat 的组合,不过两个 Tomcat 分别被放置于不同的主机,不同的域名。其中 Apache+Tomcat 的方案与 Nginx 的方案原理上是一样的,它们都是基于反向代理,相对于使用 Nginx 配置动静分离,Apache 的配置就显得略微复杂一些。
前提:已有Tomcat+JDK环境下的主域名服务器
设置子域名
子域名所指向的IP主机存放静态资源(图片/音乐/CSS/JS)
安装Nginx
在子域名所指向的IP主机安装
安装nginx需要的环境,pcre(作用rewrite)、zlib(作用压缩)、ssl(https支持)
yum install gcc yum -y install zlib yum –y install pcre yum –y install openssl
-
tar –zxvf nginx-1.9.9.tar.gz –C ./(路径随意) cd nginx-1.9.9 ./congigure --prefix=/usr/local/nginx(路径随意) make make install
启动Nginx
Nginx部署目录:/usr/local/nginx-1.9.9/sbin
重启/usr/local/nginx-1.7.8/sbin/nginx -s reload
停止
/usr/local/nginx-1.7.8/sbin/nginx -s stop
关闭防火墙,或者添加防火墙规则就可以测试了。
service iptables stop
或者编辑配置文件:
vi /etc/sysconfig/iptables
添加这样一条开放80端口的规则后保存:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
重启服务即可:
service iptables restart
静态资源存放及修改
默认Nginx网站根目录为/usr/local/nginx/html
- 将静态资源放到Nginx/html目录下
- 将主域名服务器中JSP文件设计静态资源的URL相应改为子域名下的静态资源URL
结果
动静分离之前LoadTime:8.47s
动静分离之后LoadTime:1.62s