Nginx使用正則表達式配置location,指定某些后綴的文件直接從文件路徑中找(如*.jpg直接去C:/XX/XX/XX/img下找),其他的請求轉(zhuǎn)發(fā)給tomcat
同時可以配置多個tomcat
Nginx對集群的訪問有幾種策略:
一個是輪詢、一個是 ip_hash、,還有一個是 nginx_upstream_jvm_route
如果不打印一些調(diào)試信息,比較難看當前請求對應那個 Tomcat,使用最后一種方法可以通過 jsessionid 這個cookie 來識別
但是某個節(jié)點掛了之后,會重新定位到其他節(jié)點上。但是Session會掛,解決方案:
1、不用session,服務無狀態(tài)畫,或用cookie加密暫存,但有偽造cookie的安全問題。
2、使用Tomcat自帶的session復制功能, 相關(guān)中文文檔http://www.jaxmao.org/tomcat-docs/cluster-howto.html
但是session復制比較麻煩,會有一些副作用。
3、用分布式的緩存來代替session。nginx+memcache解決。
最好使用第三方共享內(nèi)存(Memcached、Redis等)來作SSO。
在共享內(nèi)存中保存用戶會話(最好自己實現(xiàn)的),客戶端Cookie中保存會話的Id。為保證萬無一失,還可以建一張表,用于保存用戶會話(共享內(nèi)存不可用時,保證用戶登錄的正常)。
解決方案討論: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配置: