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 连接并将其在内部代理到应用程序服务器时特别有用。