今天新项目上线,碰到一个问题,公司用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