mirror of https://github.com/apache/lucene.git
249 lines
11 KiB
XML
249 lines
11 KiB
XML
<?xml version="1.0"?>
|
|
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd">
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- Configure the Jetty Server -->
|
|
<!-- -->
|
|
<!-- Documentation of this file format can be found at: -->
|
|
<!-- http://wiki.eclipse.org/Jetty/Reference/jetty.xml_syntax -->
|
|
<!-- -->
|
|
<!-- =============================================================== -->
|
|
|
|
|
|
<Configure id="Server" class="org.eclipse.jetty.server.Server">
|
|
|
|
<!-- =========================================================== -->
|
|
<!-- Configure the Server Thread Pool. -->
|
|
<!-- The server holds a common thread pool which is used by -->
|
|
<!-- default as the executor used by all connectors and servlet -->
|
|
<!-- dispatches. -->
|
|
<!-- -->
|
|
<!-- Configuring a fixed thread pool is vital to controlling the -->
|
|
<!-- maximal memory footprint of the server and is a key tuning -->
|
|
<!-- parameter for tuning. In an application that rarely blocks -->
|
|
<!-- then maximal threads may be close to the number of 5*CPUs. -->
|
|
<!-- In an application that frequently blocks, then maximal -->
|
|
<!-- threads should be set as high as possible given the memory -->
|
|
<!-- available. -->
|
|
<!-- -->
|
|
<!-- Consult the javadoc of o.e.j.util.thread.QueuedThreadPool -->
|
|
<!-- for all configuration that may be set here. -->
|
|
<!-- =========================================================== -->
|
|
<Arg name="threadpool">
|
|
<New id="threadpool" class="com.codahale.metrics.jetty9.InstrumentedQueuedThreadPool">
|
|
<Arg name="registry">
|
|
<Call id="solrJettyMetricRegistry" name="getOrCreate" class="com.codahale.metrics.SharedMetricRegistries">
|
|
<Arg>solr.jetty</Arg>
|
|
</Call>
|
|
</Arg>
|
|
</New>
|
|
</Arg>
|
|
|
|
<Get name="ThreadPool">
|
|
<Set name="minThreads" type="int"><Property name="solr.jetty.threads.min" default="10"/></Set>
|
|
<Set name="maxThreads" type="int"><Property name="solr.jetty.threads.max" default="10000"/></Set>
|
|
<Set name="idleTimeout" type="int"><Property name="solr.jetty.threads.idle.timeout" default="120000"/></Set>
|
|
<Set name="stopTimeout" type="int"><Property name="solr.jetty.threads.stop.timeout" default="60000"/></Set>
|
|
<Set name="detailedDump">false</Set>
|
|
</Get>
|
|
|
|
|
|
<!-- =========================================================== -->
|
|
<!-- Http Configuration. -->
|
|
<!-- This is a common configuration instance used by all -->
|
|
<!-- connectors that can carry HTTP semantics (HTTP, HTTPS, SPDY)-->
|
|
<!-- It configures the non wire protocol aspects of the HTTP -->
|
|
<!-- semantic. -->
|
|
<!-- -->
|
|
<!-- This configuration is only defined here and is used by -->
|
|
<!-- reference from the jetty-http.xml, jetty-https.xml and -->
|
|
<!-- jetty-spdy.xml configuration files which instantiate the -->
|
|
<!-- connectors. -->
|
|
<!-- -->
|
|
<!-- Consult the javadoc of o.e.j.server.HttpConfiguration -->
|
|
<!-- for all configuration that may be set here. -->
|
|
<!-- =========================================================== -->
|
|
<New id="httpConfig" class="org.eclipse.jetty.server.HttpConfiguration">
|
|
<Set name="secureScheme">https</Set>
|
|
<Set name="securePort"><Property name="solr.jetty.secure.port" default="8443" /></Set>
|
|
<Set name="outputBufferSize"><Property name="solr.jetty.output.buffer.size" default="32768" /></Set>
|
|
<Set name="outputAggregationSize"><Property name="solr.jetty.output.aggregation.size" default="8192" /></Set>
|
|
<Set name="requestHeaderSize"><Property name="solr.jetty.request.header.size" default="8192" /></Set>
|
|
<Set name="responseHeaderSize"><Property name="solr.jetty.response.header.size" default="8192" /></Set>
|
|
<Set name="sendServerVersion"><Property name="solr.jetty.send.server.version" default="false" /></Set>
|
|
<Set name="sendDateHeader"><Property name="solr.jetty.send.date.header" default="false" /></Set>
|
|
<Set name="headerCacheSize"><Property name="solr.jetty.header.cache.size" default="512" /></Set>
|
|
<Set name="delayDispatchUntilContent"><Property name="solr.jetty.delayDispatchUntilContent" default="false"/></Set>
|
|
<!-- Uncomment to enable handling of X-Forwarded- style headers
|
|
<Call name="addCustomizer">
|
|
<Arg><New class="org.eclipse.jetty.server.ForwardedRequestCustomizer"/></Arg>
|
|
</Call>
|
|
-->
|
|
</New>
|
|
|
|
<!-- =========================================================== -->
|
|
<!-- RewriteHandle to set headers, redirect root to Solr -->
|
|
<!-- =========================================================== -->
|
|
<New id="RewriteHandler" class="org.eclipse.jetty.rewrite.handler.RewriteHandler">
|
|
<Set name="rewriteRequestURI">true</Set>
|
|
<Set name="rewritePathInfo">false</Set>
|
|
<Set name="originalPathAttribute">requestedPath</Set>
|
|
|
|
<!-- security-related headers -->
|
|
<Call name="addRule">
|
|
<Arg>
|
|
<New class="org.eclipse.jetty.rewrite.handler.HeaderPatternRule">
|
|
<Set name="pattern">/solr/*</Set>
|
|
<Set name="name">Content-Security-Policy</Set>
|
|
<Set name="value">default-src 'none'; base-uri 'none'; connect-src 'self'; form-action 'self'; font-src 'self'; frame-ancestors 'none'; img-src 'self'; media-src 'self'; style-src 'self' 'unsafe-inline'; script-src 'self'; worker-src 'self';</Set>
|
|
</New>
|
|
</Arg>
|
|
</Call>
|
|
<Call name="addRule">
|
|
<Arg>
|
|
<New class="org.eclipse.jetty.rewrite.handler.HeaderPatternRule">
|
|
<Set name="pattern">/solr/*</Set>
|
|
<Set name="name">X-Content-Type-Options</Set>
|
|
<Set name="value">nosniff</Set>
|
|
</New>
|
|
</Arg>
|
|
</Call>
|
|
<Call name="addRule">
|
|
<Arg>
|
|
<New class="org.eclipse.jetty.rewrite.handler.HeaderPatternRule">
|
|
<Set name="pattern">/solr/*</Set>
|
|
<Set name="name">X-Frame-Options</Set>
|
|
<Set name="value">SAMEORIGIN</Set>
|
|
</New>
|
|
</Arg>
|
|
</Call>
|
|
<Call name="addRule">
|
|
<Arg>
|
|
<New class="org.eclipse.jetty.rewrite.handler.HeaderPatternRule">
|
|
<Set name="pattern">/solr/*</Set>
|
|
<Set name="name">X-XSS-Protection</Set>
|
|
<Set name="value">1; mode=block</Set>
|
|
</New>
|
|
</Arg>
|
|
</Call>
|
|
|
|
<!-- redirect root to solr -->
|
|
<Call name="addRule">
|
|
<Arg>
|
|
<New class="org.eclipse.jetty.rewrite.handler.RedirectRegexRule">
|
|
<Set name="regex">^/$</Set>
|
|
<Set name="location">/solr/</Set>
|
|
</New>
|
|
</Arg>
|
|
</Call>
|
|
<Call name="addRule">
|
|
<Arg>
|
|
<New class="org.eclipse.jetty.rewrite.handler.RewritePatternRule">
|
|
<Set name="pattern">/v2/*</Set>
|
|
<Set name="replacement">/solr/____v2</Set>
|
|
</New>
|
|
</Arg>
|
|
</Call>
|
|
<Call name="addRule">
|
|
<Arg>
|
|
<New class="org.eclipse.jetty.rewrite.handler.RewritePatternRule">
|
|
<Set name="pattern">/api/*</Set>
|
|
<Set name="replacement">/solr/____v2</Set>
|
|
</New>
|
|
</Arg>
|
|
</Call>
|
|
<Set name="handler">
|
|
<New id="Handlers" class="org.eclipse.jetty.server.handler.HandlerCollection">
|
|
<Set name="handlers">
|
|
<Array type="org.eclipse.jetty.server.Handler">
|
|
<Item>
|
|
<New class="org.eclipse.jetty.server.handler.InetAccessHandler">
|
|
<Call name="include">
|
|
<Arg>
|
|
<Call class="org.eclipse.jetty.util.StringUtil" name="csvSplit">
|
|
<Arg><Property name="solr.jetty.inetaccess.includes" default=""/></Arg>
|
|
</Call>
|
|
</Arg>
|
|
</Call>
|
|
<Call name="exclude">
|
|
<Arg>
|
|
<Call class="org.eclipse.jetty.util.StringUtil" name="csvSplit">
|
|
<Arg><Property name="solr.jetty.inetaccess.excludes" default=""/></Arg>
|
|
</Call>
|
|
</Arg>
|
|
</Call>
|
|
<Set name="handler">
|
|
<New id="Contexts" class="org.eclipse.jetty.server.handler.ContextHandlerCollection"/>
|
|
</Set>
|
|
</New>
|
|
</Item>
|
|
<Item>
|
|
<New id="InstrumentedHandler" class="com.codahale.metrics.jetty9.InstrumentedHandler">
|
|
<Arg><Ref refid="solrJettyMetricRegistry"/></Arg>
|
|
<Set name="handler">
|
|
<New id="DefaultHandler" class="org.eclipse.jetty.server.handler.DefaultHandler"/>
|
|
</Set>
|
|
</New>
|
|
</Item>
|
|
</Array>
|
|
</Set>
|
|
</New>
|
|
</Set>
|
|
</New>
|
|
|
|
<!-- =========================================================== -->
|
|
<!-- Set handler Collection Structure -->
|
|
<!-- =========================================================== -->
|
|
<Set name="handler">
|
|
<Ref id="RewriteHandler"/>
|
|
</Set>
|
|
|
|
<!-- =========================================================== -->
|
|
<!-- extra options -->
|
|
<!-- =========================================================== -->
|
|
<Set name="stopAtShutdown">true</Set>
|
|
<Set name="dumpAfterStart">false</Set>
|
|
<Set name="dumpBeforeStop">false</Set>
|
|
|
|
<Call name="addBean">
|
|
<Arg>
|
|
<New id="DeploymentManager" class="org.eclipse.jetty.deploy.DeploymentManager">
|
|
<Set name="contexts">
|
|
<Ref refid="Contexts" />
|
|
</Set>
|
|
<Call name="setContextAttribute">
|
|
<Arg>org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern</Arg>
|
|
<Arg>.*/servlet-api-[^/]*\.jar$</Arg>
|
|
</Call>
|
|
|
|
<Call name="addAppProvider">
|
|
<Arg>
|
|
<New class="org.eclipse.jetty.deploy.providers.WebAppProvider">
|
|
<Set name="monitoredDirName"><Property name="jetty.base" default="."/>/contexts</Set>
|
|
<Set name="scanInterval">0</Set>
|
|
</New>
|
|
</Arg>
|
|
</Call>
|
|
|
|
<!-- Add a customize step to the deployment lifecycle -->
|
|
<!-- uncomment and replace DebugBinding with your extended AppLifeCycle.Binding class
|
|
<Call name="insertLifeCycleNode">
|
|
<Arg>deployed</Arg>
|
|
<Arg>starting</Arg>
|
|
<Arg>customise</Arg>
|
|
</Call>
|
|
<Call name="addLifeCycleBinding">
|
|
<Arg>
|
|
<New class="org.eclipse.jetty.deploy.bindings.DebugBinding">
|
|
<Arg>customise</Arg>
|
|
</New>
|
|
</Arg>
|
|
</Call>
|
|
-->
|
|
|
|
</New>
|
|
</Arg>
|
|
</Call>
|
|
|
|
</Configure>
|