今天新專案上線,碰到一個問題,公司用f5轉發,使用的世https協議,但是在我們專案裡request.getScheme()取得到的卻是http,維運說是我們程式碼問題.. ..,我查看我們專案的tomcat的serve.xml,發現沒有證書,我想問一下精通這方面問題的小伙伴們,tomcat裡沒有證書,能用https協議嗎?有碰到過這個問題的嗎?怎麼解決的?
阿神2017-05-27 17:43:49
https通常是由反向代理(如F5)來完成的(即SSL憑證是配在反向代理上的),而Tomcat本身用的是http協定。
由於反向代理用了7層轉發,request.getRemoteAddr()
不可能得到用户真实IP地址,所以通常在反向代理那边配X-Forwarded-For
,Tomcat这边用request.getHeader("X-Forwarded-For")
拿到用户真实IP地址)。同样道理,request.getScheme()
也不可能得到用户真实的协议,通常会在反向代理那边配X-Forwarded-Proto
这种Header,Tomcat这边用request.getHeader("X-Forwarded-Proto")
來判斷使用者是否處於https狀態。
漂亮男人2017-05-27 17:43:49
沒明白你的問題是啥。 。
tomcat沒配證書怎麼用https?
f5沒用過,類似的nginx是可以做到ssl卸載的,也就是你的應用程式不需要感知https