有没有办法从HttpServlet请求中判断请求是通过Apache AJP连接器还是直接请求



有没有办法从HttpServlet请求中判断请求是通过Apache AJP连接器还是直接

<Connector port="8443"
scheme="https" secure="true" enableLookups="false" disableUploadTimeout="true"
maxHttpHeaderSize="8192" maxThreads="8000" acceptCount="3000" SSLEnabled="true"
maxConnections="10000" protocol="org.apache.coyote.http11.Http11NioProtocol">
...
</Connector>
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" secretRequired="false" />

我们的senario是一些用户通过互联网访问tomcat,在互联网上访问是

网址:8443->由防火墙指向内部网apache:443->AJP连接器至tomcat:8009

当在内联网上时,客户管理员已经将网址映射到tomcat,这样

网址:8443->tomcat:8443

因此broswer URL是相同的网址:8443,因此从URL无法判断它是通过apache还是直接到tomcat

通过在apache 中设置头找到了一种方法

RequestHeader集PROXY_HEADER APACHE

然后在HttpServlet请求.getHeaders 中检测PROXY_HEADER

最新更新