該配置文件中配置了一個Nginx連接兩個Tomcat,當請求過來時,會依據SessionID中的后綴來查找請求發送到哪個Tomcat,例如NTESSTUDYSI=1816E5ECBC052F6ABA420FEE7B06DA86.qa18-8010;就會把帶這個SessionID的請求發送到 10.120.36.68(qa18)這臺機器上去。
在qa18這臺機器的Tomcat配置文件server.xml中,會設置jvmRoute="qa18-8010",這樣保證生成的SessionID的后綴是qa18-8010,如果這個兩個后綴不一致的話,同樣會出現問題。
例如如果Nginx配置文件中upstream.conf中設置的srun_id=qa18-8010,而tomcat配置文件中設置的jvmRoute="qatest18-8010",那么獲取Cookie得到的SessionID后綴則為qatest18-8010,當發送請求到Nginx時,檢測到SessionID的后綴和設置的server服務器無法匹配,則會丟失session,使得發送到Tomcat的動態請求依舊是沒有Session信息的請求,造成session丟失,測試過程中還會有session不斷的創建。
原文轉自:http://www.blogjava.net/qileilove/archive/2013/04/01/397217.html