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配置: