系统架构 - 关于nginx架构处理静态文件的一个疑问
滿天的星座
滿天的星座 2017-05-16 17:24:18
0
2
480

最前面是2台nginx服务器N1,N2用keepalive做高可用
后端是4台tomcat T1,T2,T3,T4做集群(使用memcached解决session共享问题)

代码里面会有一些js/css等静态文件,比较好处理,可以在这6台服务器间源代码同步。

系统会上传大量的pdf/doc这样的文件,并且需要转换成swf格式供以后预览,所以用T3,T4来专门处理。其它普通业务交给T1,T2

那么问题来了,客户端要访问一个pdf或swf文件,请求发给nginx,这里肯定不能拦截下来,因为本地只有js/css这类静态文件,没有doc/pdf,于是用location proxy_pass到T3,T4,但T3,T4上只有tomcat,它处理静态文件效率肯定不行。怎么办?

我的思路有两种:

  1. 使用共享文件系统,但稳定性有待考察
  2. 后端再用一个apache

不知道大家是怎么解决的?

滿天的星座
滿天的星座

全部回复(2)
習慣沉默

这个问题是要沉了吗?这个场景应该很多,有现成的可以参考的解决方案吧

给我你的怀抱

最简单的方式应该是给doc/pdf资源指定一个新域名或子域名,配置nginx,对新域名的请求全部转发到t3,t4上。

不过你这里有一个问题,如果用户上传文件到t3,然后下次访问这个文件时nginx将请求转发到t4怎么办?
所以,t3和t4是不是有同步机制?
解决这个办法又有一些办法:
1,按照你说的使用共享文件系统,samba之类的,t3、t4的文件都上传到这里
2,手动在两台机器间同步文件,好处是数据相当于有了备份,坏处就不说了
3,试试又拍之类的使用cdn吧,这样连你最开始的问题都能解决
4,。。。。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!