diff --git a/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/ConfigMetaTypeProvider.java b/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/ConfigMetaTypeProvider.java
index e96bd2f..a0d4ee9 100644
--- a/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/ConfigMetaTypeProvider.java
+++ b/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/ConfigMetaTypeProvider.java
@@ -242,6 +242,12 @@
                 2147483647,
                 null, null,
                 bundle.getBundleContext().getProperty(JettyConfig.FELIX_JETTY_EXCLUDED_PROTOCOLS)));
+        
+        adList.add(new AttributeDefinitionImpl(JettyConfig.FELIX_PROXY_LOAD_BALANCER_CONNECTION_ENABLE,
+                "Enable Proxy/Load Balancer Connection",
+                "Whether or not the Proxy/Load Balancer Connection is enabled. Defaults to false thus disabled.",
+                false,
+                bundle.getBundleContext().getProperty(JettyConfig.FELIX_PROXY_LOAD_BALANCER_CONNECTION_ENABLE)));
 
         return new ObjectClassDefinition()
         {
diff --git a/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyConfig.java b/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyConfig.java
index daafbef..14cce15 100644
--- a/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyConfig.java
+++ b/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyConfig.java
@@ -127,6 +127,9 @@
     /** Felix specific property to configure the excluded protocols */
     public static final String FELIX_JETTY_EXCLUDED_PROTOCOLS = "org.apache.felix.https.jetty.protocols.excluded";
 
+    /** Felix specific property to control whether to enable Proxy/Load Balancer Connection */
+    public static final String FELIX_PROXY_LOAD_BALANCER_CONNECTION_ENABLE = "org.apache.felix.proxy.load.balancer.connection.enable";
+    
     private static String validateContextPath(String ctxPath)
     {
         // undefined, empty, or root context path
@@ -359,6 +362,11 @@
         boolean useHttps = getBooleanProperty(FELIX_HTTPS_ENABLE, getBooleanProperty(OSCAR_HTTPS_ENABLE, false));
         return useHttps && getHttpsPort() > 0;
     }
+    
+    public boolean isProxyLoadBalancerConnection()
+    {
+        return getBooleanProperty(FELIX_PROXY_LOAD_BALANCER_CONNECTION_ENABLE, false);
+    }
 
     public void reset()
     {
diff --git a/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyService.java b/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyService.java
index 30fe550..b6db3a5 100644
--- a/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyService.java
+++ b/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyService.java
@@ -47,6 +47,7 @@
 import org.eclipse.jetty.security.HashLoginService;
 import org.eclipse.jetty.server.Connector;
 import org.eclipse.jetty.server.ConnectorStatistics;
+import org.eclipse.jetty.server.ForwardedRequestCustomizer;
 import org.eclipse.jetty.server.HttpConfiguration;
 import org.eclipse.jetty.server.HttpConnectionFactory;
 import org.eclipse.jetty.server.SecureRequestCustomizer;
@@ -317,6 +318,12 @@
         configureHttpConnectionFactory(connFactory);
         ServerConnector connector = new ServerConnector(server, connFactory);
         configureConnector(connector, this.config.getHttpPort());
+        
+        if (this.config.isProxyLoadBalancerConnection())
+        {
+            connFactory.getHttpConfiguration().addCustomizer(new ForwardedRequestCustomizer());
+        }
+        
         return startConnector(connector);
     }
 
@@ -329,7 +336,14 @@
         configureSslContextFactory(sslContextFactory);
 
         ServerConnector connector = new ServerConnector(server, new SslConnectionFactory(sslContextFactory, HttpVersion.HTTP_1_1.toString()), connFactory);
-        connFactory.getHttpConfiguration().addCustomizer(new SecureRequestCustomizer());
+        HttpConfiguration httpConfiguration = connFactory.getHttpConfiguration();
+        httpConfiguration.addCustomizer(new SecureRequestCustomizer());
+        
+        if (this.config.isProxyLoadBalancerConnection())
+        {
+            httpConfiguration.addCustomizer(new ForwardedRequestCustomizer());
+        }
+        
         configureConnector(connector, this.config.getHttpsPort());
         return startConnector(connector);
     }
