首页  >  问答  >  正文

系统架构 - 关于nginx架构处理静态文件的一个疑问

最前面是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

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

滿天的星座滿天的星座2736 天前484

全部回复(2)我来回复

  • 習慣沉默

    習慣沉默2017-05-16 17:26:18

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

    回复
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-16 17:26:18

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

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

    回复
    0
  • 取消回复