Hello
This specific customizer (org.eclipse.jetty.server.ForwardedRequestCustomizer) is added in Pax Web 8 when org.ops4j.pax.web PID has this configuration property:
org.osgi.service.http.checkForwardedHeaders = true
But I've checked that this property was added to Pax Web in 2014 and is handed by pax-web-jetty and pax-web-undertow:
if (checkForwardedHeaders != null && checkForwardedHeaders) {
httpConfig.addCustomizer(new ForwardedRequestCustomizer());
}
But for completeness, you can use external Jetty config (for example in ${karaf.etc}/jetty.xml) like this:
<!-- Object named "Server" of org.eclipse.jetty.server.Server class is configured by pax-web-jetty -->
<Configure id="Server" class="org.eclipse.jetty.server.Server">
<New id="httpConfig" class="org.eclipse.jetty.server.HttpConfiguration">
<Set name="secureScheme">https</Set>
<Set name="securePort">
<Property name="jetty.secure.port" default="8443" />
</Set>
<Set name="outputBufferSize">32768</Set>
<Set name="requestHeaderSize">8192</Set>
<Set name="responseHeaderSize">8192</Set>
<Set name="sendServerVersion">true</Set>
<Set name="sendDateHeader">false</Set>
<Set name="headerCacheSize">512</Set>
<Call name="addCustomizer">
<Arg>
<New class="org.eclipse.jetty.server.ForwardedRequestCustomizer" />
</Arg>
</Call>
</New>
<Call name="addConnector">
<Arg>
<New class="org.eclipse.jetty.server.ServerConnector">
<Arg name="server">
<Ref refid="Server" />
</Arg>
<Arg name="factories">
<Array type="org.eclipse.jetty.server.ConnectionFactory">
<Item>
<New class="org.eclipse.jetty.server.HttpConnectionFactory">
<Arg name="config">
<Ref refid="httpConfig" />
</Arg>
</New>
</Item>
</Array>
</Arg>
<Set name="host">
<Property name="jetty.host" default="0.0.0.0" />
</Set>
<Set name="port">
<Property name="jetty.port" default="8181" />
</Set>
<Set name="idleTimeout">
<Property name="http.timeout" default="30000" />
</Set>
<Set name="name">default</Set>
</New>
</Arg>
</Call>
</Configure>
When you install pax-web-http-jetty feature in Pax Web 8 (or pax-jetty in Pax Web 7) you should have org.ops4j.pax.web.cfg PID installed into KARAF_HOME/etc - there should be ready (in Pax Web 7) or commented out (in Pax Web 8) option:
# external Jetty configuration file where Jetty-specific beans may be declared
#org.ops4j.pax.web.config.file = ${karaf.etc}/jetty.xml
just uncomment it and it should work - I've just checked that "ForwardedRequestCustomizer" works without problems when configured this way.
kind regards
Grzegorz Grzybek