您的位置:首页 > 运维架构 > Tomcat

nginx+tomcat动静分离

2016-07-11 22:05 771 查看
tomcat是一个比较全面的web容器,对静态网页的处理,应该是比较费资源的,特别是每次都要从磁盘读取静态页面,然后返回。这中间会消耗Tomcat的资源,可能会使那些动态页面解析性能影响。秉承Linux哲学,一个软件只做一件事的原则。Tomcat就应该只处理JSP动态页面。这里就用到以前了解的Nginx来进行反向代理。

tomcat设置

在主配置文件里添加如下

vim server.xml

<Context path="" reloadable="true" docBase="/home/apache-tomcat-7.0.64/webapps/test1/" />


path是说明虚拟目录的名字,如果你要只输入ip地址就显示主页(即输入127.0.0.1:8080则出现项目首页),则该键值留为空; docBase是虚拟目录的路径

若需要输入域名+端口访问项目则修改host的name对应参数如下:

<Host name="www.nginx2.com"  appBase="webapps"
unpackWARs="true" autoDeploy="true">


二.Nginx设置

server修改如下,测试location 后加正则表达式后,proxy_pass后不能加完整路径,如http://127.0.0.1:8080/test1,暂时不知道原因

server {
listen       80;
server_name  www.nginx2.com;
root   /opt/apache-tomcat-7.0.64/webapps/ylyg01;
index index.html index.jsp;

#所有js,css相关的静态资源文件的请求由Nginx处理,root指定文件根路径,需要精确到项目根文件夹
location ~ .*\.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|ico|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma|css|js)$ {
#root   /opt/apache-tomcat-7.0.64/webapps/ylyg01;
expires 30d;
}
#动态请求转发到tomcat服务器
location ~ .*$ {
#location ~ .*\.(do|jsp|action)?$ {
proxy_pass http://127.0.0.1:8080; proxy_cookie_path /test1/ /;
}

#location / {
#    proxy_pass http://127.0.0.1:8080; #   proxy_cookie_path /test1/ /;
#}
}


ps:Location 匹配的优先级

(location =) > (location 完整路径 >) >(location ^~ 路径) >(location ~* 正则) >(location 路径)

location /{
# 匹配所有以 / 开头的请求。
# 但是如果有更长的同类型的表达式,则选择更长的表达式。
# 如果有正则表达式可以匹配,则优先匹配正则表达式。
}


三.测试

启动ngnix和tomcat后,输入 www.nginx2.com 并进行对应跳转

后看tomcat日志 log/localhost_access_log.2016--.txt,可以发现对应时间点内没有tomcat对图片的处理。

参考文献

Nginx location 优先级:http://www.linuxidc.com/Linux/2015-06/119275.htm
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  nginx tomcat 动静分离