nginx的动静分离
nginx动静分离的原理
nginx的动静分离,指的是由nginx服务器对用户的请求进行分类转发,静态资源(html,css,js,images)由静态资源服务器处理(nginx服务器),动态资源(jsp,serverlet)由动态资源服务器(tomcat)处理,tomcat本来使用来处理动态资源的,同时tomcat也可以处理静态资源,但是tomcat处理静态资源的效率不高,还会带来额外的资源开销。利用nginx动静分离的架构,能够让 tomcat 专注于处理动态资源,静态资源统一由静态资源服务器处理,从而提升整个服务系统的性能 。
nginx动静分离配置
服务器规划
服务器 | IP地址 | 存储文件 |
---|---|---|
nginx | 192.168.10.27 | css js images |
tomcat | 192.168.10.28 | jsp |
1、配置nginx服务器将静态资源存放到nginx服务器中
进入/usr/local/nginx/html目录下 创建存放静态资源的文件夹
mkdir static
cd static
传入一张png照片
2、nginx关于静态资源的配置
进入/usr/local/nginx/conf 配置nginx.conf
在默认server块写入
location ~*/(js|css|png|image) { # 正则表达式配对静态文件资源
root /usr/local/nginx/html/static/; #静态资源的目录
autoindex on;
}
在浏览器中输入192.168.10.27/static/test.png测试静态资源是否能被访问
3、tomcat配置动态资源
进入tomcat的路径 /opt/tomcat/webapps/ROOT
删除index.jsp的全部内容 将测试页面访问次数的jsp代码写入index.jsp中 代码如下:
<%@ page contentType="text/html; charset=UTF-8" %>
<%
Object obj =application.getAttribute("counter");
if(obj==null){
application.setAttribute("counter", new Integer(1));
out.print("该页面已被访问1次!");
}else{
int count=Integer.parseInt(obj.toString());
count++;
out.print("该页面被访问了"+count+"次!");
application.setAttribute("counter", count);
}
%>
保存后退出
4、nginx关于动态资源的配置
进入/usr/local/nginx/conf 配置nginx.conf
在默认server块写入
location / {
proxy_pass http://192.168.10.28:8080;
}
在浏览器写入http://192.168.10.27/index.jsp测试动态资源是否能被访问
测试成功
server块代码如下:
server {
listen 80;
server_name localhost;
location ~*/(js|css|png|image) {
root /usr/local/nginx/html/static/;
autoindex on;
}
location / {
proxy_pass http://192.168.10.28:8080;
}
}