nginx怎么实现tomcat动静分离(nginx+apache动静分离)

nginx怎么实现tomcat动静分离(nginx+apache动静分离)

浏览次数:
信息来源: 用户投稿
更新日期: 2025-11-25
文章简介

1.为什么要实现动静分离1)nginx的处理静态资源能力超强主要是nginx处理静态页面的效率远高于tomcat的处理能力,如果tomcat的请求量为1000次,则nginx的请求量为6000次

2025阿里云双十一服务器活动

1.为什么要实现动静分离

1)nginx的处理静态资源能力超强

主要是nginx处理静态页面的效率远高于tomcat的处理能力,如果tomcat的请求量为1000次,则nginx的请求量为6000次,tomcat每秒的吞吐量为0.6m,nginx的每秒吞吐量为3.6m,可以说,nginx处理静态资源的能力是tomcat处理能力的6倍,优势可见一斑。

2)动态资源和静态资源分开,使服务器结构更清晰。

2.动静分离原理

服务端接收来自客户端的请求中,有一部分是静态资源的请求,例如html,css,js和图片资源等等,有一部分是动态数据的请求。因为tomcat处理静态资源的速度比较慢,所以我们可以考虑把所有静态资源独立开来,交给处理静态资源更快的服务器例如nginx处理,而把动态请求交给tomcat处理。

如下图所示,我们在机器上同时安装了nginx和tomcat,把所有的静态资源都放置在nginx的webroot目录下面,把动态请求的程序都放在tomcat的webroot目录下面,当客户端访问服务端的时候,如果是静态资源的请求,就直接到nginx的webroot目录下面获取资源,如果是动态资源的请求,nginx利用反向代理的原理,把请求转发给tomcat进行处理,这样就实现了动静分离,提高了服务器处理请求的性能。

3.动静分离的详细配置

1)首先熟悉下nginx的重要配置文件nginx.conf

default_typeapplication/octet-stream;

log_formatmain'$remote_addr-$remote_user[$time_local]"$request"'

'$status$body_bytes_sent"$http_referer"'

'"$http_user_agent""$http_x_forwarded_for"';

access_loglogs/access.logmain;

gzip_typestext/plainapplication/x-javascripttext/cssapplication/xml;

#jsp网站程序根目录,一般nginx与tomcat在同一个目录

root/usr/local/tomcat/webapps/root;

indexindex.htmlindex.jspindex.html;

proxy_passhttp://127.0.0.1:8080;#来自jsp请求交给tomcat处理

proxy_set_headerhost$host;#后端的web服务器可以通过x-forwarded-for获取用户真实ip

proxy_set_headerx-real-ip$remote_addr;

proxy_set_headerx-forwarded-for$proxy_add_x_forwarded_for;

nginx怎么实现tomcat动静分离,nginx+apache动静分离

client_body_buffer_size128k;#缓冲区代理缓冲用户端请求的最大字节数

proxy_connect_timeout90;#nginx跟后端服务器连接超时时间(代理连接超时)

proxy_read_timeout90;#连接成功后,后端服务器响应时间(代理接收超时)

proxy_buffer_size4k;#设置代理服务器(nginx)保存用户头信息的缓冲区大小

proxy_buffers632k;#proxy_buffers缓冲区,网页平均在32k以下的话,这样设置

proxy_busy_buffers_size64k;#高负荷下缓冲大小(proxy_buffers*2)

proxy_temp_file_write_size64k;#设定缓存文件夹大小,大于这个值,将从upstream服务器传

location~.*\.(gif|jpg|png|bmp|swf)$#由nginx处理静态页面

expires30d;#使用expires缓存模块,缓存到客户端30天

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

error_page404/404.html;#错误页面

error_page500502503504/50x.html;

}

2)配置动静分离

#配置nginx动静分离,定义的静态页面直接从nginx发布目录读取。

location~.*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)${

root/webapps/myproject/code/static-resource;

#expires定义用户浏览器缓存的时间为7天,如果静态页面不常更新,可以设置更长,这样可以节省带宽和缓解服务器的压力

location~^/(web-inf)/{#这个很重要,不然用户就可以访问了

}

可以看到,get请求是“/cms/include/dedeajax2.js”,这时nginx就会在配置中的/home下,寻找这一路径的文件,完整路径为:

/home/cms/include/dedeajax2.js

报错为nosuchfileordirectory,就可以在对应的/home目录下看文件路径的问题。

配置成功后,就可以发现静态文件通过nginx处理了,静态文件的请求不再进入tomcat服务器,从而可以打包时,静态文件的目录如js、css等不再打进war包。

以上就是nginx怎么实现tomcat动静分离的详细内容,更多请关注主机测评网其它相关文章!

标签:
香港服务器租赁费用(香港公司如何投资内地公司)
« 上一篇
返回列表
下一篇 »

如本文对您有帮助,就请抽根烟吧!