今天新專案上線,碰到一個問題,公司用f5轉發,使用的世https協議,但是在我們專案裡request.getScheme()取得到的卻是http,維運說是我們程式碼問題.. ..,我查看我們專案的tomcat的serve.xml,發現沒有證書,我想問一下精通這方面問題的小伙伴們,tomcat裡沒有證書,能用https協議嗎?有碰到過這個問題的嗎?怎麼解決的?
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狀態。
request.getRemoteAddr()
X-Forwarded-For
request.getHeader("X-Forwarded-For")
request.getScheme()
X-Forwarded-Proto
request.getHeader("X-Forwarded-Proto")
沒明白你的問題是啥。 。 tomcat沒配證書怎麼用https? f5沒用過,類似的nginx是可以做到ssl卸載的,也就是你的應用程式不需要感知https
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狀態。沒明白你的問題是啥。 。
tomcat沒配證書怎麼用https?
f5沒用過,類似的nginx是可以做到ssl卸載的,也就是你的應用程式不需要感知https