diff --git a/src/main/java/de/ids_mannheim/korap/config/KustvaktConfiguration.java b/src/main/java/de/ids_mannheim/korap/config/KustvaktConfiguration.java
index 6545719..d1e95d7 100644
--- a/src/main/java/de/ids_mannheim/korap/config/KustvaktConfiguration.java
+++ b/src/main/java/de/ids_mannheim/korap/config/KustvaktConfiguration.java
@@ -118,6 +118,7 @@
     // another variable might be needed to define which metadata fields are restricted 
     private boolean isMetadataRestricted = false;
     private boolean totalResultCacheEnabled;
+    private boolean requestLogEnabled = false;
     
     private int guestTimeout;
     private int loginTimeout;
@@ -146,6 +147,8 @@
                 properties.getProperty("security.secure.random.algorithm", ""));
         setMessageDigestAlgorithm(
                 properties.getProperty("security.md.algorithm", "MD5"));
+        requestLogEnabled = Boolean.valueOf(properties.getProperty(
+                "log.request.enabled","false"));
     }
 
     /**
diff --git a/src/main/java/de/ids_mannheim/korap/server/KustvaktBaseServer.java b/src/main/java/de/ids_mannheim/korap/server/KustvaktBaseServer.java
index 9f55842..7465bcf 100644
--- a/src/main/java/de/ids_mannheim/korap/server/KustvaktBaseServer.java
+++ b/src/main/java/de/ids_mannheim/korap/server/KustvaktBaseServer.java
@@ -13,13 +13,18 @@
 
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
+import org.eclipse.jetty.ee10.servlet.ServletContextHandler;
+import org.eclipse.jetty.ee10.servlet.ServletHolder;
 import org.eclipse.jetty.server.Connector;
+import org.eclipse.jetty.server.CustomRequestLog;
+import org.eclipse.jetty.server.ForwardedRequestCustomizer;
+import org.eclipse.jetty.server.HttpConfiguration;
 import org.eclipse.jetty.server.HttpConnectionFactory;
+import org.eclipse.jetty.server.RequestLog;
+import org.eclipse.jetty.server.RequestLogWriter;
 import org.eclipse.jetty.server.Server;
 import org.eclipse.jetty.server.ServerConnector;
 import org.eclipse.jetty.server.handler.ShutdownHandler;
-import org.eclipse.jetty.ee10.servlet.ServletContextHandler;
-import org.eclipse.jetty.ee10.servlet.ServletHolder;
 import org.glassfish.jersey.server.ServerProperties;
 import org.glassfish.jersey.servlet.ServletContainer;
 import org.springframework.web.context.ContextLoaderListener;
@@ -152,12 +157,22 @@
         servletHolder.setInitOrder(1);
         contextHandler.addServlet(servletHolder, config.getBaseURL());
 
-        ServerConnector connector = new ServerConnector(server);
+        
+        HttpConfiguration httpConfig = new HttpConfiguration();
+        // EM: support for X-Forwarded headers
+        httpConfig.addCustomizer( new ForwardedRequestCustomizer() );
+        httpConfig.setRequestHeaderSize(64000);
+        HttpConnectionFactory connectionFactory = 
+        		new HttpConnectionFactory(httpConfig);
+
+        ServerConnector connector = new ServerConnector(server, 
+        		connectionFactory);
         connector.setPort(kargs.port);
         connector.setIdleTimeout(60000);
-        connector.getConnectionFactory(HttpConnectionFactory.class)
-                .getHttpConfiguration().setRequestHeaderSize(64000);
-
+        //connector.getConnectionFactory(HttpConnectionFactory.class)
+        //        .getHttpConfiguration().setRequestHeaderSize(64000);
+        
+        // MK:
         // Jetty 12: Use ShutdownHandler as a wrapper instead of building a HandlerList.
         // Older code (Jetty 11):
         // ShutdownHandler shutdownHandler = new ShutdownHandler(adminToken, true, false);
@@ -178,8 +193,12 @@
         }
         shutdownHandler.setHandler(contextHandler);
         server.setHandler(shutdownHandler);
-
-
+        
+        // setup request log 
+        if (config.isRequestLogEnabled()) {
+        	server.setRequestLog(createRequestLog());
+        }
+        
         server.setConnectors(new Connector[] { connector });
         try {
             log.info("Starting server on port: " + kargs.port);
@@ -194,6 +213,18 @@
         }
     }
 
+    private RequestLog createRequestLog() {
+    	RequestLogWriter logWriter = new RequestLogWriter();
+    	logWriter.setFilename("data/logs/jetty-requests.log");
+    	logWriter.setAppend(true);
+    	logWriter.setRetainDays(30);
+
+        // format: time, client IP, method + URI, status, bytes
+        String logFormat = "%{yyyy-MM-dd HH:mm:ss}t %{client}a \"%r\" %s %O";
+        RequestLog requestLog = new CustomRequestLog(logWriter, logFormat);
+        return requestLog;
+	}
+    
     @Setter
     public static class KustvaktArgs {
 
diff --git a/src/main/resources/kustvakt-lite.conf b/src/main/resources/kustvakt-lite.conf
index ba32850..4649206 100644
--- a/src/main/resources/kustvakt-lite.conf
+++ b/src/main/resources/kustvakt-lite.conf
@@ -1,3 +1,6 @@
+# This is the default configuration for Kustvakt lite version
+# Copy this file to data/kustvakt-lite.conf and adjust settings
+
 # Krill settings
 
 # index dir
@@ -17,7 +20,6 @@
 current.api.version = v1.0
 # multiple versions separated by space
 supported.api.version = v1.0
-
 # default
 kustvakt.base.url=/api/*
 
@@ -25,6 +27,12 @@
 server.port=8089
 server.host=localhost
 
+# log
+log.request.enabled = false
+
+# Cache
+cache.total.results.enabled = true
+
 # Pipe (optional) 
 # pipe.host=https://korap.ids-mannheim.de (default)
 
diff --git a/src/main/resources/kustvakt.conf b/src/main/resources/kustvakt.conf
index 61cad26..31642af 100644
--- a/src/main/resources/kustvakt.conf
+++ b/src/main/resources/kustvakt.conf
@@ -1,3 +1,6 @@
+# This is the default configuration for Kustvakt full version
+# Copy this file to data/kustvakt.conf and adjust settings
+
 #Krill
 krill.indexDir= sample-index
 
@@ -21,10 +24,17 @@
 server.port=8089
 server.host=localhost
 
+# log
+log.request.enabled = false
+
+# Cache
+cache.total.results.enabled = true
+
 # Timeout
 # timeout.guest = 10000 (default)
 # timeout.login = 90000 (default)
 
+
 # Pipe (optional) 
 # pipe.host=https://korap.ids-mannheim.de
 
@@ -39,6 +49,7 @@
 
 # Virtual corpus and queries
 max.user.persistent.queries = 5
+# max.token.context.size = 40
 vc.list.statistics.enabled = false
 
 # Availability regex only support |
@@ -67,6 +78,7 @@
 # scopes separated by space
 oauth2.default.scopes = search match_info 
 oauth2.client.credentials.scopes = client_info
+oauth2.initial.super.client = false
 
 ## see SecureRandom Number Generation Algorithms
 ## optional
