173.9.5. Obtaining X-Forwarded-For header with HttpServletRequest.getRemoteAddr()
如果 HTTP 请求由 Apache 服务器处理,并转发到带有 mod_proxy 的 jetty,则原始客户端 IP 地址位于 X-Forwarded-For 标头中,HttpServletRequest.getRemoteAddr ()将返回 Apache 代理的地址。
Jetty 具有 forward 属性,它取来自 X-Forwarded-For 的值,并将其放置在 HttpServletRequest remoteAddr 属性中。 此属性不能通过端点配置直接可用,但可以使用 socketConnectors 属性轻松添加:
<bean id="jetty" class="org.apache.camel.component.jetty.JettyHttpComponent"> <property name="socketConnectors"> <map> <entry key="8080"> <bean class="org.eclipse.jetty.server.nio.SelectChannelConnector"> <property name="forwarded" value="true"/> </bean> </entry> </map> </property> </bean>
这在现有 Apache 服务器处理域的 TLS 连接并将其在内部代理到应用程序服务器时特别有用。