Nginx+tomcat负载均衡并动静态分离

Nginx使用正则表达式配置location,指定某些后缀的文件直接从文件路径中找(如*.jpg直接去C:/XX/XX/XX/img下找),其他的请求转发给tomcat

同时可以配置多个tomcat

Nginx对集群的访问有几种策略:

  一个是轮询、一个是 ip_hash、,还有一个是 nginx_upstream_jvm_route

  如果不打印一些调试信息,比较难看当前请求对应那个 Tomcat,使用最后一种方法可以通过 jsessionid 这个cookie 来识别

但是某个节点挂了之后,会重新定位到其他节点上。但是Session会挂,解决方案:

1、不用session,服务无状态画,或用cookie加密暂存,但有伪造cookie的安全问题。

2、使用Tomcat自带的session复制功能, 相关中文文档http://www.jaxmao.org/tomcat-docs/cluster-howto.html

但是session复制比较麻烦,会有一些副作用。

3、用分布式的缓存来代替session。nginx+memcache解决。

最好使用第三方共享内存(Memcached、Redis等)来作SSO。

在共享内存中保存用户会话(最好自己实现的),客户端Cookie中保存会话的Id。为保证万无一失,还可以建一张表,用于保存用户会话(共享内存不可用时,保证用户登录的正常)。

解决方案讨论:http://www.oschina.net/question/114905_19428?sort=default&p=1#answers

成功案例

http://www.oschina.net/question/1014681_107718

http://www.oschina.net/question/59889_25385

OSC的tomcat和Nginx配置:

http://www.oschina.net/code/snippet_12_174

http://www.oschina.net/code/snippet_12_175

posted @ 2013-07-19 17:53  大树的博客  Views(396)  Comments(0Edit  收藏  举报