| <?xml version="1.0" encoding="UTF-8"?> |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| <!DOCTYPE document [ |
| <!ENTITY project SYSTEM "project.xml"> |
| ]> |
| <document url="http.html"> |
| |
| &project; |
| |
| <properties> |
| <author email="craigmcc@apache.org">Craig R. McClanahan</author> |
| <author email="yoavs@apache.org">Yoav Shapira</author> |
| <title>The HTTP Connector</title> |
| </properties> |
| |
| <body> |
| |
| <section name="Table of Contents"> |
| <toc/> |
| </section> |
| |
| <section name="Introduction"> |
| |
| <p>The <strong>HTTP Connector</strong> element represents a |
| <strong>Connector</strong> component that supports the HTTP/1.1 protocol. |
| It enables Catalina to function as a stand-alone web server, in addition |
| to its ability to execute servlets and JSP pages. A particular instance |
| of this component listens for connections on a specific TCP port number |
| on the server. One or more such <strong>Connectors</strong> can be |
| configured as part of a single <a href="service.html">Service</a>, each |
| forwarding to the associated <a href="engine.html">Engine</a> to perform |
| request processing and create the response.</p> |
| |
| <p>If you wish to configure the <strong>Connector</strong> that is used |
| for connections to web servers using the AJP protocol (such as the |
| <code>mod_jk 1.2.x</code> connector for Apache 1.3), please refer to the |
| <a href="ajp.html">AJP Connector</a> documentation.</p> |
| |
| <p>Each incoming request requires |
| a thread for the duration of that request. If more simultaneous requests |
| are received than can be handled by the currently available request |
| processing threads, additional threads will be created up to the |
| configured maximum (the value of the <code>maxThreads</code> attribute). |
| If still more simultaneous requests are received, they are stacked up |
| inside the server socket created by the <strong>Connector</strong>, up to |
| the configured maximum (the value of the <code>acceptCount</code> |
| attribute). Any further simultaneous requests will receive "connection |
| refused" errors, until resources are available to process them.</p> |
| |
| </section> |
| |
| |
| <section name="Attributes"> |
| |
| <subsection name="Common Attributes"> |
| |
| <p>All implementations of <strong>Connector</strong> |
| support the following attributes:</p> |
| |
| <attributes> |
| |
| <attribute name="allowTrace" required="false"> |
| <p>A boolean value which can be used to enable or disable the TRACE |
| HTTP method. If not specified, this attribute is set to false.</p> |
| </attribute> |
| |
| <attribute name="asyncTimeout" required="false"> |
| <p>The default timeout for asynchronous requests in milliseconds. If not |
| specified, this attribute is set to the Servlet specification default of |
| 30000 (30 seconds).</p> |
| </attribute> |
| |
| <attribute name="defaultSSLHostConfigName" required="false"> |
| <p>The name of the default <strong>SSLHostConfig</strong> that will be |
| used for secure connections (if this connector is configured for secure |
| connections) if the client connection does not provide SNI or if the SNI |
| is provided but does not match any configured |
| <strong>SSLHostConfig</strong>. If not specified the default value of |
| <code>_default_</code> will be used.</p> |
| </attribute> |
| |
| <attribute name="enableLookups" required="false"> |
| <p>Set to <code>true</code> if you want calls to |
| <code>request.getRemoteHost()</code> to perform DNS lookups in |
| order to return the actual host name of the remote client. Set |
| to <code>false</code> to skip the DNS lookup and return the IP |
| address in String form instead (thereby improving performance). |
| By default, DNS lookups are disabled.</p> |
| </attribute> |
| |
| <attribute name="maxHeaderCount" required="false"> |
| <p>The maximum number of headers in a request that are allowed by the |
| container. A request that contains more headers than the specified limit |
| will be rejected. A value of less than 0 means no limit. |
| If not specified, a default of 100 is used.</p> |
| </attribute> |
| |
| <attribute name="maxParameterCount" required="false"> |
| <p>The maximum number of parameter and value pairs (GET plus POST) which |
| will be automatically parsed by the container. Parameter and value pairs |
| beyond this limit will be ignored. A value of less than 0 means no limit. |
| If not specified, a default of 10000 is used. Note that |
| <code>FailedRequestFilter</code> <a href="filter.html">filter</a> can be |
| used to reject requests that hit the limit.</p> |
| </attribute> |
| |
| <attribute name="maxPostSize" required="false"> |
| <p>The maximum size in bytes of the POST which will be handled by |
| the container FORM URL parameter parsing. The limit can be disabled by |
| setting this attribute to a value less than zero. If not specified, this |
| attribute is set to 2097152 (2 megabytes). Note that the |
| <a href="filter.html#Failed_Request_Filter"><code>FailedRequestFilter</code></a> |
| can be used to reject requests that exceed this limit.</p> |
| </attribute> |
| |
| <attribute name="maxSavePostSize" required="false"> |
| <p>The maximum size in bytes of the POST which will be saved/buffered by |
| the container during FORM or CLIENT-CERT authentication. For both types |
| of authentication, the POST will be saved/buffered before the user is |
| authenticated. For CLIENT-CERT authentication, the POST is buffered for |
| the duration of the SSL handshake and the buffer emptied when the request |
| is processed. For FORM authentication the POST is saved whilst the user |
| is re-directed to the login form and is retained until the user |
| successfully authenticates or the session associated with the |
| authentication request expires. The limit can be disabled by setting this |
| attribute to -1. Setting the attribute to zero will disable the saving of |
| POST data during authentication. If not specified, this attribute is set |
| to 4096 (4 kilobytes).</p> |
| </attribute> |
| |
| <attribute name="parseBodyMethods" required="false"> |
| <p>A comma-separated list of HTTP methods for which request |
| bodies using <code>application/x-www-form-urlencoded</code> will be parsed |
| for request parameters identically to POST. This is useful in RESTful |
| applications that want to support POST-style semantics for PUT requests. |
| Note that any setting other than <code>POST</code> causes Tomcat |
| to behave in a way that goes against the intent of the servlet |
| specification. |
| The HTTP method TRACE is specifically forbidden here in accordance |
| with the HTTP specification. |
| The default is <code>POST</code></p> |
| </attribute> |
| |
| <attribute name="port" required="true"> |
| <p>The TCP port number on which this <strong>Connector</strong> |
| will create a server socket and await incoming connections. Your |
| operating system will allow only one server application to listen |
| to a particular port number on a particular IP address. If the special |
| value of 0 (zero) is used, then Tomcat will select a free port at random |
| to use for this connector. This is typically only useful in embedded and |
| testing applications.</p> |
| </attribute> |
| |
| <attribute name="protocol" required="false"> |
| <p>Sets the protocol to handle incoming traffic. The default value is |
| <code>HTTP/1.1</code> which uses an auto-switching mechanism to select |
| either a Java NIO based connector or an APR/native based connector. |
| If the <code>PATH</code> (Windows) or <code>LD_LIBRARY_PATH</code> (on |
| most unix systems) environment variables contain the Tomcat native |
| library, and the <code>AprLifecycleListener</code> that is used to |
| initialize APR has its <code>useAprConnector</code> attribute set to |
| <code>true</code>, the APR/native connector will be used. If the native library |
| cannot be found or the attribute is not configured, the Java NIO based |
| connector will be used. Note that the APR/native connector has different |
| settings for HTTPS than the Java connectors.<br/> |
| To use an explicit protocol rather than rely on the auto-switching |
| mechanism described above, the following values may be used:<br/> |
| <code>org.apache.coyote.http11.Http11NioProtocol</code> - |
| non blocking Java NIO connector<br/> |
| <code>org.apache.coyote.http11.Http11Nio2Protocol</code> - |
| non blocking Java NIO2 connector<br/> |
| <code>org.apache.coyote.http11.Http11AprProtocol</code> - |
| the APR/native connector.<br/> |
| Custom implementations may also be used.<br/> |
| Take a look at our <a href="#Connector_Comparison">Connector |
| Comparison</a> chart. The configuration for both Java connectors is |
| identical, for http and https.<br/> |
| For more information on the APR connector and APR specific SSL settings |
| please visit the <a href="../apr.html">APR documentation</a> |
| </p> |
| </attribute> |
| |
| <attribute name="proxyName" required="false"> |
| <p>If this <strong>Connector</strong> is being used in a proxy |
| configuration, configure this attribute to specify the server name |
| to be returned for calls to <code>request.getServerName()</code>. |
| See <a href="#Proxy_Support">Proxy Support</a> for more |
| information.</p> |
| </attribute> |
| |
| <attribute name="proxyPort" required="false"> |
| <p>If this <strong>Connector</strong> is being used in a proxy |
| configuration, configure this attribute to specify the server port |
| to be returned for calls to <code>request.getServerPort()</code>. |
| See <a href="#Proxy_Support">Proxy Support</a> for more |
| information.</p> |
| </attribute> |
| |
| <attribute name="redirectPort" required="false"> |
| <p>If this <strong>Connector</strong> is supporting non-SSL |
| requests, and a request is received for which a matching |
| <code><security-constraint></code> requires SSL transport, |
| Catalina will automatically redirect the request to the port |
| number specified here.</p> |
| </attribute> |
| |
| <attribute name="scheme" required="false"> |
| <p>Set this attribute to the name of the protocol you wish to have |
| returned by calls to <code>request.getScheme()</code>. For |
| example, you would set this attribute to "<code>https</code>" |
| for an SSL Connector. The default value is "<code>http</code>". |
| </p> |
| </attribute> |
| |
| <attribute name="secure" required="false"> |
| <p>Set this attribute to <code>true</code> if you wish to have |
| calls to <code>request.isSecure()</code> to return <code>true</code> |
| for requests received by this Connector. You would want this on an |
| SSL Connector or a non SSL connector that is receiving data from a |
| SSL accelerator, like a crypto card, a SSL appliance or even a webserver. |
| The default value is <code>false</code>.</p> |
| </attribute> |
| |
| <attribute name="URIEncoding" required="false"> |
| <p>This specifies the character encoding used to decode the URI bytes, |
| after %xx decoding the URL. If not specified, UTF-8 will be used unless |
| the <code>org.apache.catalina.STRICT_SERVLET_COMPLIANCE</code> |
| <a href="systemprops.html">system property</a> is set to <code>true</code> |
| in which case ISO-8859-1 will be used.</p> |
| </attribute> |
| |
| <attribute name="useBodyEncodingForURI" required="false"> |
| <p>This specifies if the encoding specified in contentType should be used |
| for URI query parameters, instead of using the URIEncoding. This |
| setting is present for compatibility with Tomcat 4.1.x, where the |
| encoding specified in the contentType, or explicitly set using |
| Request.setCharacterEncoding method was also used for the parameters from |
| the URL. The default value is <code>false</code>. |
| </p> |
| <p><strong>Notes:</strong> 1) This setting is applied only to the |
| query string of a request. Unlike <code>URIEncoding</code> it does not |
| affect the path portion of a request URI. 2) If request character |
| encoding is not known (is not provided by a browser and is not set by |
| <code>SetCharacterEncodingFilter</code> or a similar filter using |
| Request.setCharacterEncoding method), the default encoding is always |
| "ISO-8859-1". The <code>URIEncoding</code> setting has no effect on |
| this default. |
| </p> |
| </attribute> |
| |
| <attribute name="useIPVHosts" required="false"> |
| <p>Set this attribute to <code>true</code> to cause Tomcat to use |
| the IP address that the request was received on to determine the Host |
| to send the request to. The default value is <code>false</code>.</p> |
| </attribute> |
| |
| <attribute name="xpoweredBy" required="false"> |
| <p>Set this attribute to <code>true</code> to cause Tomcat to advertise |
| support for the Servlet specification using the header recommended in the |
| specification. The default value is <code>false</code>.</p> |
| </attribute> |
| |
| </attributes> |
| |
| </subsection> |
| |
| <subsection name="Standard Implementation"> |
| |
| <p>The standard HTTP connectors (NIO, NIO2 and APR/native) all support the |
| following attributes in addition to the common Connector attributes listed |
| above.</p> |
| |
| <attributes> |
| |
| <attribute name="acceptCount" required="false"> |
| <p>The maximum queue length for incoming connection requests when |
| all possible request processing threads are in use. Any requests |
| received when the queue is full will be refused. The default |
| value is 100.</p> |
| </attribute> |
| |
| <attribute name="acceptorThreadCount" required="false"> |
| <p>The number of threads to be used to accept connections. Increase this |
| value on a multi CPU machine, although you would never really need more |
| than <code>2</code>. Also, with a lot of non keep alive connections, you |
| might want to increase this value as well. Default value is |
| <code>1</code>.</p> |
| </attribute> |
| |
| <attribute name="acceptorThreadPriority" required="false"> |
| <p>The priority of the acceptor threads. The threads used to accept |
| new connections. The default value is <code>5</code> (the value of the |
| <code>java.lang.Thread.NORM_PRIORITY</code> constant). See the JavaDoc |
| for the <code>java.lang.Thread</code> class for more details on what |
| this priority means.</p> |
| </attribute> |
| |
| <attribute name="address" required="false"> |
| <p>For servers with more than one IP address, this attribute specifies |
| which address will be used for listening on the specified port. By |
| default, the connector will listen all local addresses. Unless the JVM is |
| configured otherwise using system properties, the Java based connectors |
| (NIO, NIO2) will listen on both IPv4 and IPv6 addresses when configured |
| with either <code>0.0.0.0</code> or <code>::</code>. The APR/native |
| connector will only listen on IPv4 addresses if configured with |
| <code>0.0.0.0</code> and will listen on IPv6 addresses (and optionally |
| IPv4 addresses depending on the setting of <strong>ipv6onlyv6</strong>) if |
| configured with <code>::</code>.</p> |
| </attribute> |
| |
| <attribute name="allowHostHeaderMismatch" required="false"> |
| <p>By default Tomcat will reject requests that specify a host in the |
| request line but specify a different host in the host header. This |
| check can be disabled by setting this attribute to <code>true</code>. If |
| not specified, the default is <code>false</code>.</p> |
| </attribute> |
| |
| <attribute name="allowedTrailerHeaders" required="false"> |
| <p>By default Tomcat will ignore all trailer headers when processing |
| chunked input. For a header to be processed, it must be added to this |
| comma-separated list of header names.</p> |
| </attribute> |
| |
| <attribute name="bindOnInit" required="false"> |
| <p>Controls when the socket used by the connector is bound. By default it |
| is bound when the connector is initiated and unbound when the connector is |
| destroyed. If set to <code>false</code>, the socket will be bound when the |
| connector is started and unbound when it is stopped.</p> |
| </attribute> |
| |
| <attribute name="clientCertProvider" required="false"> |
| <p>When client certificate information is presented in a form other than |
| instances of <code>java.security.cert.X509Certificate</code> it needs to |
| be converted before it can be used and this property controls which JSSE |
| provider is used to perform the conversion. For example it is used with |
| the <a href="ajp.html">AJP connectors</a>, the HTTP APR connector and |
| with the <a href="valve.html#SSL_Authenticator_Valve"> |
| org.apache.catalina.valves.SSLValve</a>. If not specified, the default |
| provider will be used.</p> |
| </attribute> |
| |
| <attribute name="compressibleMimeType" required="false"> |
| <p>The value is a comma separated list of MIME types for which HTTP |
| compression may be used. |
| The default value is |
| <code> |
| text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json,application/xml |
| </code>. |
| </p> |
| </attribute> |
| |
| <attribute name="compression" required="false"> |
| <p>The <strong>Connector</strong> may use HTTP/1.1 GZIP compression in |
| an attempt to save server bandwidth. The acceptable values for the |
| parameter is "off" (disable compression), "on" (allow compression, which |
| causes text data to be compressed), "force" (forces compression in all |
| cases), or a numerical integer value (which is equivalent to "on", but |
| specifies the minimum amount of data before the output is compressed). If |
| the content-length is not known and compression is set to "on" or more |
| aggressive, the output will also be compressed. If not specified, this |
| attribute is set to "off".</p> |
| <p><em>Note</em>: There is a tradeoff between using compression (saving |
| your bandwidth) and using the sendfile feature (saving your CPU cycles). |
| If the connector supports the sendfile feature, e.g. the NIO connector, |
| using sendfile will take precedence over compression. The symptoms will |
| be that static files greater that 48 Kb will be sent uncompressed. |
| You can turn off sendfile by setting <code>useSendfile</code> attribute |
| of the connector, as documented below, or change the sendfile usage |
| threshold in the configuration of the |
| <a href="../default-servlet.html">DefaultServlet</a> in the default |
| <code>conf/web.xml</code> or in the <code>web.xml</code> of your web |
| application. |
| </p> |
| </attribute> |
| |
| <attribute name="compressionMinSize" required="false"> |
| <p>If <strong>compression</strong> is set to "on" then this attribute |
| may be used to specify the minimum amount of data before the output is |
| compressed. If not specified, this attribute is defaults to "2048".</p> |
| </attribute> |
| |
| <attribute name="connectionLinger" required="false"> |
| <p>The number of seconds during which the sockets used by this |
| <strong>Connector</strong> will linger when they are closed. The default |
| value is <code>-1</code> which disables socket linger.</p> |
| </attribute> |
| |
| <attribute name="connectionTimeout" required="false"> |
| <p>The number of milliseconds this <strong>Connector</strong> will wait, |
| after accepting a connection, for the request URI line to be |
| presented. Use a value of -1 to indicate no (i.e. infinite) timeout. |
| The default value is 60000 (i.e. 60 seconds) but note that the standard |
| server.xml that ships with Tomcat sets this to 20000 (i.e. 20 seconds). |
| Unless <strong>disableUploadTimeout</strong> is set to <code>false</code>, |
| this timeout will also be used when reading the request body (if any).</p> |
| </attribute> |
| |
| <attribute name="connectionUploadTimeout" required="false"> |
| <p>Specifies the timeout, in milliseconds, to use while a data upload is |
| in progress. This only takes effect if |
| <strong>disableUploadTimeout</strong> is set to <code>false</code>. |
| </p> |
| </attribute> |
| |
| <attribute name="disableUploadTimeout" required="false"> |
| <p>This flag allows the servlet container to use a different, usually |
| longer connection timeout during data upload. If not specified, this |
| attribute is set to <code>true</code> which disables this longer timeout. |
| </p> |
| </attribute> |
| |
| <attribute name="executor" required="false"> |
| <p>A reference to the name in an <a href="executor.html">Executor</a> |
| element. If this attribute is set, and the named executor exists, the |
| connector will use the executor, and all the other thread attributes will |
| be ignored. Note that if a shared executor is not specified for a |
| connector then the connector will use a private, internal executor to |
| provide the thread pool.</p> |
| </attribute> |
| |
| <attribute name="executorTerminationTimeoutMillis" required="false"> |
| <p>The time that the private internal executor will wait for request |
| processing threads to terminate before continuing with the process of |
| stopping the connector. If not set, the default is <code>5000</code> (5 |
| seconds).</p> |
| </attribute> |
| |
| <attribute name="keepAliveTimeout" required="false"> |
| <p>The number of milliseconds this <strong>Connector</strong> will wait |
| for another HTTP request before closing the connection. The default value |
| is to use the value that has been set for the |
| <strong>connectionTimeout</strong> attribute. |
| Use a value of -1 to indicate no (i.e. infinite) timeout.</p> |
| </attribute> |
| |
| <attribute name="maxConnections" required="false"> |
| <p>The maximum number of connections that the server will accept and |
| process at any given time. When this number has been reached, the server |
| will accept, but not process, one further connection. This additional |
| connection be blocked until the number of connections being processed |
| falls below <strong>maxConnections</strong> at which point the server will |
| start accepting and processing new connections again. Note that once the |
| limit has been reached, the operating system may still accept connections |
| based on the <code>acceptCount</code> setting. The default value varies by |
| connector type. For NIO and NIO2 the default is <code>10000</code>. |
| For APR/native, the default is <code>8192</code>.</p> |
| <p>Note that for APR/native on Windows, the configured value will be |
| reduced to the highest multiple of 1024 that is less than or equal to |
| maxConnections. This is done for performance reasons.<br/> |
| If set to a value of -1, the maxConnections feature is disabled |
| and connections are not counted.</p> |
| </attribute> |
| |
| <attribute name="maxCookieCount" required="false"> |
| <p>The maximum number of cookies that are permitted for a request. A value |
| of less than zero means no limit. If not specified, a default value of 200 |
| will be used.</p> |
| </attribute> |
| |
| <attribute name="maxExtensionSize" required="false"> |
| <p>Limits the total length of chunk extensions in chunked HTTP requests. |
| If the value is <code>-1</code>, no limit will be imposed. If not |
| specified, the default value of <code>8192</code> will be used.</p> |
| </attribute> |
| |
| <attribute name="maxHttpHeaderSize" required="false"> |
| <p>The maximum size of the request and response HTTP header, specified |
| in bytes. If not specified, this attribute is set to 8192 (8 KB).</p> |
| </attribute> |
| |
| <attribute name="maxKeepAliveRequests" required="false"> |
| <p>The maximum number of HTTP requests which can be pipelined until |
| the connection is closed by the server. Setting this attribute to 1 will |
| disable HTTP/1.0 keep-alive, as well as HTTP/1.1 keep-alive and |
| pipelining. Setting this to -1 will allow an unlimited amount of |
| pipelined or keep-alive HTTP requests. |
| If not specified, this attribute is set to 100.</p> |
| </attribute> |
| |
| <attribute name="maxSwallowSize" required="false"> |
| <p>The maximum number of request body bytes (excluding transfer encoding |
| overhead) that will be swallowed by Tomcat for an aborted upload. An |
| aborted upload is when Tomcat knows that the request body is going to be |
| ignored but the client still sends it. If Tomcat does not swallow the body |
| the client is unlikely to see the response. If not specified the default |
| of 2097152 (2 megabytes) will be used. A value of less than zero indicates |
| that no limit should be enforced.</p> |
| </attribute> |
| |
| <attribute name="maxThreads" required="false"> |
| <p>The maximum number of request processing threads to be created |
| by this <strong>Connector</strong>, which therefore determines the |
| maximum number of simultaneous requests that can be handled. If |
| not specified, this attribute is set to 200. If an executor is associated |
| with this connector, this attribute is ignored as the connector will |
| execute tasks using the executor rather than an internal thread pool. Note |
| that if an executor is configured any value set for this attribute will be |
| recorded correctly but it will be reported (e.g. via JMX) as |
| <code>-1</code> to make clear that it is not used.</p> |
| </attribute> |
| |
| <attribute name="maxTrailerSize" required="false"> |
| <p>Limits the total length of trailing headers in the last chunk of |
| a chunked HTTP request. If the value is <code>-1</code>, no limit will be |
| imposed. If not specified, the default value of <code>8192</code> will be |
| used.</p> |
| </attribute> |
| |
| <attribute name="minSpareThreads" required="false"> |
| <p>The minimum number of threads always kept running. This includes both |
| active and idle threads. If not specified, the default of <code>10</code> |
| is used. If an executor is associated with this connector, this attribute |
| is ignored as the connector will execute tasks using the executor rather |
| than an internal thread pool. Note that if an executor is configured any |
| value set for this attribute will be recorded correctly but it will be |
| reported (e.g. via JMX) as <code>-1</code> to make clear that it is not |
| used.</p> |
| </attribute> |
| |
| <attribute name="noCompressionUserAgents" required="false"> |
| <p>The value is a regular expression (using <code>java.util.regex</code>) |
| matching the <code>user-agent</code> header of HTTP clients for which |
| compression should not be used, |
| because these clients, although they do advertise support for the |
| feature, have a broken implementation. |
| The default value is an empty String (regexp matching disabled).</p> |
| </attribute> |
| |
| <attribute name="processorCache" required="false"> |
| <p>The protocol handler caches Processor objects to speed up performance. |
| This setting dictates how many of these objects get cached. |
| <code>-1</code> means unlimited, default is <code>200</code>. If not using |
| Servlet 3.0 asynchronous processing, a good default is to use the same as |
| the maxThreads setting. If using Servlet 3.0 asynchronous processing, a |
| good default is to use the larger of maxThreads and the maximum number of |
| expected concurrent requests (synchronous and asynchronous).</p> |
| </attribute> |
| |
| <attribute name="rejectIllegalHeaderName" required="false"> |
| <p>If an HTTP request is received that contains an illegal header name |
| (i.e. the header name is not a token) this setting determines if the |
| request will be rejected with a 400 response (<code>true</code>) or if the |
| illegal header be ignored (<code>false</code>). The default value is |
| <code>true</code> which will cause the request to be rejected.</p> |
| </attribute> |
| |
| <attribute name="relaxedPathChars" required="false"> |
| <p>The <a href="https://tools.ietf.org/rfc/rfc7230.txt">HTTP/1.1 |
| specification</a> requires that certain characters are %nn encoded when |
| used in URI paths. Unfortunately, many user agents including all the major |
| browsers are not compliant with this specification and use these |
| characters in unencoded form. To prevent Tomcat rejecting such requests, |
| this attribute may be used to specify the additional characters to allow. |
| If not specified, no additional characters will be allowed. The value may |
| be any combination of the following characters: |
| <code>" < > [ \ ] ^ ` { | }</code> . Any other characters |
| present in the value will be ignored.</p> |
| </attribute> |
| |
| <attribute name="relaxedQueryChars" required="false"> |
| <p>The <a href="https://tools.ietf.org/rfc/rfc7230.txt">HTTP/1.1 |
| specification</a> requires that certain characters are %nn encoded when |
| used in URI query strings. Unfortunately, many user agents including all |
| the major browsers are not compliant with this specification and use these |
| characters in unencoded form. To prevent Tomcat rejecting such requests, |
| this attribute may be used to specify the additional characters to allow. |
| If not specified, no additional characters will be allowed. The value may |
| be any combination of the following characters: |
| <code>" < > [ \ ] ^ ` { | }</code> . Any other characters |
| present in the value will be ignored.</p> |
| </attribute> |
| |
| <attribute name="restrictedUserAgents" required="false"> |
| <p>The value is a regular expression (using <code>java.util.regex</code>) |
| matching the <code>user-agent</code> header of HTTP clients for which |
| HTTP/1.1 or HTTP/1.0 keep alive should not be used, even if the clients |
| advertise support for these features. |
| The default value is an empty String (regexp matching disabled).</p> |
| </attribute> |
| |
| <attribute name="server" required="false"> |
| <p>Overrides the Server header for the http response. If set, the value |
| for this attribute overrides any Server header set by a web application. |
| If not set, any value specified by the application is used. If the |
| application does not specify a value then no Server header is set.</p> |
| </attribute> |
| |
| <attribute name="serverRemoveAppProvidedValues" required="false"> |
| <p>If <code>true</code>, any Server header set by a web |
| application will be removed. Note that if <strong>server</strong> is set, |
| this attribute is effectively ignored. If not set, the default value of |
| <code>false</code> will be used.</p> |
| </attribute> |
| |
| <attribute name="SSLEnabled" required="false"> |
| <p>Use this attribute to enable SSL traffic on a connector. |
| To turn on SSL handshake/encryption/decryption on a connector |
| set this value to <code>true</code>. |
| The default value is <code>false</code>. |
| When turning this value <code>true</code> you will want to set the |
| <code>scheme</code> and the <code>secure</code> attributes as well |
| to pass the correct <code>request.getScheme()</code> and |
| <code>request.isSecure()</code> values to the servlets |
| See <a href="#SSL_Support">SSL Support</a> for more information. |
| </p> |
| </attribute> |
| |
| <attribute name="tcpNoDelay" required="false"> |
| <p>If set to <code>true</code>, the TCP_NO_DELAY option will be |
| set on the server socket, which improves performance under most |
| circumstances. This is set to <code>true</code> by default.</p> |
| </attribute> |
| |
| <attribute name="threadPriority" required="false"> |
| <p>The priority of the request processing threads within the JVM. |
| The default value is <code>5</code> (the value of the |
| <code>java.lang.Thread.NORM_PRIORITY</code> constant). See the JavaDoc |
| for the <code>java.lang.Thread</code> class for more details on what |
| this priority means. If an executor is associated |
| with this connector, this attribute is ignored as the connector will |
| execute tasks using the executor rather than an internal thread pool. Note |
| that if an executor is configured any value set for this attribute will be |
| recorded correctly but it will be reported (e.g. via JMX) as |
| <code>-1</code> to make clear that it is not used.</p> |
| </attribute> |
| |
| <attribute name="throwOnFailure" required="false"> |
| <p>If the Connector experiences an Exception during a Lifecycle transition |
| should the Exception be rethrown or logged? If not specified, the default |
| of <code>false</code> will be used. Note that the default can be changed |
| by the <code>org.apache.catalina.startup.EXIT_ON_INIT_FAILURE</code> |
| system property.</p> |
| </attribute> |
| |
| </attributes> |
| |
| </subsection> |
| |
| <subsection name="Java TCP socket attributes"> |
| |
| <p>The NIO and NIO2 implementation support the following Java TCP |
| socket attributes in addition to the common Connector and HTTP attributes |
| listed above.</p> |
| |
| <attributes> |
| <attribute name="socket.rxBufSize" required="false"> |
| <p>(int)The socket receive buffer (SO_RCVBUF) size in bytes. JVM default |
| used if not set.</p> |
| </attribute> |
| <attribute name="socket.txBufSize" required="false"> |
| <p>(int)The socket send buffer (SO_SNDBUF) size in bytes. JVM default |
| used if not set.</p> |
| </attribute> |
| <attribute name="socket.tcpNoDelay" required="false"> |
| <p>(bool)This is equivalent to standard attribute |
| <strong>tcpNoDelay</strong>.</p> |
| </attribute> |
| <attribute name="socket.soKeepAlive" required="false"> |
| <p>(bool)Boolean value for the socket's keep alive setting |
| (SO_KEEPALIVE). JVM default used if not set.</p> |
| </attribute> |
| <attribute name="socket.ooBInline" required="false"> |
| <p>(bool)Boolean value for the socket OOBINLINE setting. JVM default |
| used if not set.</p> |
| </attribute> |
| <attribute name="socket.soReuseAddress" required="false"> |
| <p>(bool)Boolean value for the sockets reuse address option |
| (SO_REUSEADDR). JVM default used if not set.</p> |
| </attribute> |
| <attribute name="socket.soLingerOn" required="false"> |
| <p>(bool)Boolean value for the sockets so linger option (SO_LINGER). |
| A value for the standard attribute <strong>connectionLinger</strong> |
| that is >=0 is equivalent to setting this to <code>true</code>. |
| A value for the standard attribute <strong>connectionLinger</strong> |
| that is <0 is equivalent to setting this to <code>false</code>. |
| Both this attribute and <code>soLingerTime</code> must be set else the |
| JVM defaults will be used for both.</p> |
| </attribute> |
| <attribute name="socket.soLingerTime" required="false"> |
| <p>(int)Value in seconds for the sockets so linger option (SO_LINGER). |
| This is equivalent to standard attribute |
| <strong>connectionLinger</strong>. |
| Both this attribute and <code>soLingerOn</code> must be set else the |
| JVM defaults will be used for both.</p> |
| </attribute> |
| <attribute name="socket.soTimeout" required="false"> |
| <p>This is equivalent to standard attribute |
| <strong>connectionTimeout</strong>.</p> |
| </attribute> |
| <attribute name="socket.performanceConnectionTime" required="false"> |
| <p>(int)The first value for the performance settings. See |
| <a href="http://docs.oracle.com/javase/7/docs/api/java/net/Socket.html#setPerformancePreferences(int,%20int,%20int)">Socket Performance Options</a>. |
| All three performance attributes must be set else the JVM defaults will |
| be used for all three.</p> |
| </attribute> |
| <attribute name="socket.performanceLatency" required="false"> |
| <p>(int)The second value for the performance settings. See |
| <a href="http://docs.oracle.com/javase/7/docs/api/java/net/Socket.html#setPerformancePreferences(int,%20int,%20int)">Socket Performance Options</a>. |
| All three performance attributes must be set else the JVM defaults will |
| be used for all three.</p> |
| </attribute> |
| <attribute name="socket.performanceBandwidth" required="false"> |
| <p>(int)The third value for the performance settings. See |
| <a href="http://docs.oracle.com/javase/7/docs/api/java/net/Socket.html#setPerformancePreferences(int,%20int,%20int)">Socket Performance Options</a>. |
| All three performance attributes must be set else the JVM defaults will |
| be used for all three.</p> |
| </attribute> |
| <attribute name="socket.unlockTimeout" required="false"> |
| <p>(int) The timeout for a socket unlock. When a connector is stopped, it will try to release the acceptor thread by opening a connector to itself. |
| The default value is <code>250</code> and the value is in milliseconds</p> |
| </attribute> |
| </attributes> |
| </subsection> |
| |
| <subsection name="NIO specific configuration"> |
| |
| <p>The following attributes are specific to the NIO connector.</p> |
| |
| <attributes> |
| |
| <attribute name="pollerThreadCount" required="false"> |
| <p>(int)The number of threads to be used to run for the polling events. |
| Default value is <code>1</code> per processor but not more than 2.<br/> |
| When accepting a socket, the operating system holds a global lock. So the benefit of |
| going above 2 threads diminishes rapidly. Having more than one thread is for |
| system that need to accept connections very rapidly. However usually just |
| increasing <code>acceptCount</code> will solve that problem. |
| Increasing this value may also be beneficial when a large amount of send file |
| operations are going on. |
| </p> |
| </attribute> |
| |
| <attribute name="pollerThreadPriority" required="false"> |
| <p>(int)The priority of the poller threads. |
| The default value is <code>5</code> (the value of the |
| <code>java.lang.Thread.NORM_PRIORITY</code> constant). See the JavaDoc |
| for the <code>java.lang.Thread</code> class for more details on what |
| this priority means.</p> |
| </attribute> |
| |
| <attribute name="selectorTimeout" required="false"> |
| <p>(int)The time in milliseconds to timeout on a select() for the |
| poller. This value is important, since connection clean up is done on |
| the same thread, so do not set this value to an extremely high one. The |
| default value is <code>1000</code> milliseconds.</p> |
| </attribute> |
| |
| <attribute name="useSendfile" required="false"> |
| <p>(bool)Use this attribute to enable or disable sendfile capability. |
| The default value is <code>true</code>. Note that the use of sendfile |
| will disable any compression that Tomcat may otherwise have performed on |
| the response.</p> |
| </attribute> |
| |
| <attribute name="socket.directBuffer" required="false"> |
| <p>(bool)Boolean value, whether to use direct ByteBuffers or java mapped |
| ByteBuffers. If <code>true</code> then |
| <code>java.nio.ByteBuffer.allocateDirect()</code> is used to allocate |
| the buffers, if <code>false</code> then |
| <code>java.nio.ByteBuffer.allocate()</code> is used. The default value |
| is <code>false</code>.<br/> |
| When you are using direct buffers, make sure you allocate the |
| appropriate amount of memory for the direct memory space. On Sun's JDK |
| that would be something like <code>-XX:MaxDirectMemorySize=256m</code>. |
| </p> |
| </attribute> |
| |
| <attribute name="socket.directSslBuffer" required="false"> |
| <p>(bool)Boolean value, whether to use direct ByteBuffers or java mapped |
| ByteBuffers for the SSL buffers. If <code>true</code> then |
| <code>java.nio.ByteBuffer.allocateDirect()</code> is used to allocate |
| the buffers, if <code>false</code> then |
| <code>java.nio.ByteBuffer.allocate()</code> is used. The default value |
| is <code>false</code>.<br/> |
| When you are using direct buffers, make sure you allocate the |
| appropriate amount of memory for the direct memory space. On Oracle's JDK |
| that would be something like <code>-XX:MaxDirectMemorySize=256m</code>. |
| </p> |
| </attribute> |
| |
| <attribute name="socket.appReadBufSize" required="false"> |
| <p>(int)Each connection that is opened up in Tomcat get associated with |
| a read ByteBuffer. This attribute controls the size of this buffer. By |
| default this read buffer is sized at <code>8192</code> bytes. For lower |
| concurrency, you can increase this to buffer more data. For an extreme |
| amount of keep alive connections, decrease this number or increase your |
| heap size.</p> |
| </attribute> |
| |
| <attribute name="socket.appWriteBufSize" required="false"> |
| <p>(int)Each connection that is opened up in Tomcat get associated with |
| a write ByteBuffer. This attribute controls the size of this buffer. By |
| default this write buffer is sized at <code>8192</code> bytes. For low |
| concurrency you can increase this to buffer more response data. For an |
| extreme amount of keep alive connections, decrease this number or |
| increase your heap size.<br/> |
| The default value here is pretty low, you should up it if you are not |
| dealing with tens of thousands concurrent connections.</p> |
| </attribute> |
| |
| <attribute name="socket.bufferPool" required="false"> |
| <p>(int)The NIO connector uses a class called NioChannel that holds |
| elements linked to a socket. To reduce garbage collection, the NIO |
| connector caches these channel objects. This value specifies the size of |
| this cache. The default value is <code>500</code>, and represents that |
| the cache will hold 500 NioChannel objects. Other values are |
| <code>-1</code> for unlimited cache and <code>0</code> for no cache.</p> |
| </attribute> |
| |
| <attribute name="socket.bufferPoolSize" required="false"> |
| <p>(int)The NioChannel pool can also be size based, not used object |
| based. The size is calculated as follows:<br/> |
| NioChannel |
| <code>buffer size = read buffer size + write buffer size</code><br/> |
| SecureNioChannel <code>buffer size = application read buffer size + |
| application write buffer size + network read buffer size + |
| network write buffer size</code><br/> |
| The value is in bytes, the default value is <code>1024*1024*100</code> |
| (100MB).</p> |
| </attribute> |
| |
| <attribute name="socket.processorCache" required="false"> |
| <p>(int)Tomcat will cache SocketProcessor objects to reduce garbage |
| collection. The integer value specifies how many objects to keep in the |
| cache at most. The default is <code>500</code>. Other values are |
| <code>-1</code> for unlimited cache and <code>0</code> for no cache.</p> |
| </attribute> |
| |
| <attribute name="socket.keyCache" required="false"> |
| <p>(int)Tomcat will cache KeyAttachment objects to reduce garbage |
| collection. The integer value specifies how many objects to keep in the |
| cache at most. The default is <code>500</code>. Other values are |
| <code>-1</code> for unlimited cache and <code>0</code> for no cache.</p> |
| </attribute> |
| |
| <attribute name="socket.eventCache" required="false"> |
| <p>(int)Tomcat will cache PollerEvent objects to reduce garbage |
| collection. The integer value specifies how many objects to keep in the |
| cache at most. The default is <code>500</code>. Other values are |
| <code>-1</code> for unlimited cache and <code>0</code> for no cache.</p> |
| </attribute> |
| |
| <attribute name="selectorPool.maxSelectors" required="false"> |
| <p>(int)The max selectors to be used in the pool, to reduce selector |
| contention. Use this option when the command line |
| <code>org.apache.tomcat.util.net.NioSelectorShared</code> value is set |
| to false. Default value is <code>200</code>.</p> |
| </attribute> |
| |
| <attribute name="selectorPool.maxSpareSelectors" required="false"> |
| <p>(int)The max spare selectors to be used in the pool, to reduce |
| selector contention. When a selector is returned to the pool, the system |
| can decide to keep it or let it be GC'd. Use this option when the |
| command line <code>org.apache.tomcat.util.net.NioSelectorShared</code> |
| value is set to false. Default value is <code>-1</code> (unlimited).</p> |
| </attribute> |
| |
| <attribute name="useInheritedChannel" required="false"> |
| <p>(bool)Defines if this connector should inherit an inetd/systemd network socket. |
| Only one connector can inherit a network socket. This can option can be |
| used to automatcially start Tomcat once a connection request is made to |
| the systemd super daemon's port. |
| The default value is <code>false</code>. See the JavaDoc |
| for the <code>java.nio.channels.spi.SelectorProvider</code> class for |
| more details.</p> |
| </attribute> |
| |
| <attribute name="command-line-options" required="false"> |
| <p>The following command line options are available for the NIO |
| connector:<br/> |
| <code>-Dorg.apache.tomcat.util.net.NioSelectorShared=true|false</code> |
| - default is <code>true</code>. Set this value to <code>false</code> if you wish to |
| use a selector for each thread. When you set it to <code>false</code>, you can |
| control the size of the pool of selectors by using the |
| <strong>selectorPool.maxSelectors</strong> attribute.</p> |
| </attribute> |
| |
| </attributes> |
| </subsection> |
| |
| <subsection name="NIO2 specific configuration"> |
| |
| <p>The following attributes are specific to the NIO2 connector.</p> |
| |
| <attributes> |
| |
| <attribute name="useSendfile" required="false"> |
| <p>(bool)Use this attribute to enable or disable sendfile capability. |
| The default value is <code>true</code>. Note that the use of sendfile |
| will disable any compression that Tomcat may otherwise have performed on |
| the response.</p> |
| </attribute> |
| |
| <attribute name="socket.directBuffer" required="false"> |
| <p>(bool)Boolean value, whether to use direct ByteBuffers or java mapped |
| ByteBuffers. If <code>true</code> then |
| <code>java.nio.ByteBuffer.allocateDirect()</code> is used to allocate |
| the buffers, if <code>false</code> then |
| <code>java.nio.ByteBuffer.allocate()</code> is used. The default value |
| is <code>false</code>.<br/> |
| When you are using direct buffers, make sure you allocate the |
| appropriate amount of memory for the direct memory space. On Sun's JDK |
| that would be something like <code>-XX:MaxDirectMemorySize=256m</code>. |
| </p> |
| </attribute> |
| |
| <attribute name="socket.directSslBuffer" required="false"> |
| <p>(bool)Boolean value, whether to use direct ByteBuffers or java mapped |
| ByteBuffers for the SSL buffers. If <code>true</code> then |
| <code>java.nio.ByteBuffer.allocateDirect()</code> is used to allocate |
| the buffers, if <code>false</code> then |
| <code>java.nio.ByteBuffer.allocate()</code> is used. The default value |
| is <code>false</code>.<br/> |
| When you are using direct buffers, make sure you allocate the |
| appropriate amount of memory for the direct memory space. On Oracle's JDK |
| that would be something like <code>-XX:MaxDirectMemorySize=256m</code>. |
| </p> |
| </attribute> |
| |
| <attribute name="socket.appReadBufSize" required="false"> |
| <p>(int)Each connection that is opened up in Tomcat get associated with |
| a read ByteBuffer. This attribute controls the size of this buffer. By |
| default this read buffer is sized at <code>8192</code> bytes. For lower |
| concurrency, you can increase this to buffer more data. For an extreme |
| amount of keep alive connections, decrease this number or increase your |
| heap size.</p> |
| </attribute> |
| |
| <attribute name="socket.appWriteBufSize" required="false"> |
| <p>(int)Each connection that is opened up in Tomcat get associated with |
| a write ByteBuffer. This attribute controls the size of this buffer. By |
| default this write buffer is sized at <code>8192</code> bytes. For low |
| concurrency you can increase this to buffer more response data. For an |
| extreme amount of keep alive connections, decrease this number or |
| increase your heap size.<br/> |
| The default value here is pretty low, you should up it if you are not |
| dealing with tens of thousands concurrent connections.</p> |
| </attribute> |
| |
| <attribute name="socket.bufferPool" required="false"> |
| <p>(int)The NIO2 connector uses a class called Nio2Channel that holds |
| elements linked to a socket. To reduce garbage collection, the NIO2 |
| connector caches these channel objects. This value specifies the size of |
| this cache. The default value is <code>500</code>, and represents that |
| the cache will hold 500 Nio2Channel objects. Other values are |
| <code>-1</code> for unlimited cache and <code>0</code> for no cache.</p> |
| </attribute> |
| |
| <attribute name="socket.processorCache" required="false"> |
| <p>(int)Tomcat will cache SocketProcessor objects to reduce garbage |
| collection. The integer value specifies how many objects to keep in the |
| cache at most. The default is <code>500</code>. Other values are |
| <code>-1</code> for unlimited cache and <code>0</code> for no cache.</p> |
| </attribute> |
| |
| </attributes> |
| </subsection> |
| |
| <subsection name="APR/native specific configuration"> |
| |
| <p>The following attributes are specific to the APR/native connector.</p> |
| |
| <attributes> |
| |
| <attribute name="deferAccept" required="false"> |
| <p>Sets the <code>TCP_DEFER_ACCEPT</code> flag on the listening socket |
| for this connector. The default value is <code>true</code> where |
| <code>TCP_DEFER_ACCEPT</code> is supported by the operating system, |
| otherwise it is <code>false</code>.</p> |
| </attribute> |
| |
| <attribute name="ipv6v6only" required="false"> |
| <p>If listening on an IPv6 address on a dual stack system, should the |
| connector only listen on the IPv6 address? If not specified the default |
| is <code>false</code> and the connector will listen on the IPv6 address |
| and the equivalent IPv4 address if present.</p> |
| </attribute> |
| |
| <attribute name="pollerThreadCount" required="false"> |
| <p>Number of threads used to poll kept alive connections. On Windows the |
| default is chosen so that the sockets managed by each thread is |
| less than 1024. For Linux the default is 1. Changing the default on |
| Windows is likely to have a negative performance impact.</p> |
| </attribute> |
| |
| <attribute name="pollTime" required="false"> |
| <p>Duration of a poll call in microseconds. Lowering this value will |
| slightly decrease latency of connections being kept alive in some cases, |
| but will use more CPU as more poll calls are being made. The default |
| value is 2000 (2ms).</p> |
| </attribute> |
| |
| <attribute name="sendfileSize" required="false"> |
| <p>Amount of sockets that the poller responsible for sending static |
| files asynchronously can hold at a given time. Extra connections will be |
| closed right away without any data being sent (resulting in a zero |
| length file on the client side). Note that in most cases, sendfile is a |
| call that will return right away (being taken care of "synchronously" by |
| the kernel), and the sendfile poller will not be used, so the amount of |
| static files which can be sent concurrently is much larger than the |
| specified amount. The default value is 1024.</p> |
| </attribute> |
| |
| <attribute name="threadPriority" required="false"> |
| <p>(int)The priority of the acceptor and poller threads. |
| The default value is <code>5</code> (the value of the |
| <code>java.lang.Thread.NORM_PRIORITY</code> constant). See the JavaDoc |
| for the <code>java.lang.Thread</code> class for more details on what |
| this priority means.</p> |
| </attribute> |
| |
| <attribute name="useSendfile" required="false"> |
| <p>(bool)Use this attribute to enable or disable sendfile capability. |
| The default value is <code>true</code>. Note that the use of sendfile |
| will disable any compression that Tomcat may otherwise have performed on |
| the response.</p> |
| </attribute> |
| |
| </attributes> |
| |
| </subsection> |
| |
| </section> |
| |
| |
| <section name="Nested Components"> |
| |
| <p>First implemented in Tomcat 9 and back-ported to 8.5, Tomcat now supports |
| Server Name Indication (SNI). This allows multiple SSL configurations to be |
| associated with a single secure connector with the configuration used for any |
| given connection determined by the host name requested by the client. To |
| facilitate this, the <strong>SSLHostConfig</strong> element was added which |
| can be used to define one of these configurations. Any number of |
| <strong>SSLHostConfig</strong> may be nested in a <strong>Connector</strong>. |
| At the same time, support was added for multiple certificates to be associated |
| with a single <strong>SSLHostConfig</strong>. Each SSL certificate is |
| therefore configured in a <strong>Certificate</strong> element with in an |
| <strong>SSLHostConfig</strong>. For further information, see the SSL Support |
| section below.</p> |
| |
| </section> |
| |
| |
| <section name="Special Features"> |
| |
| |
| <subsection name="HTTP/1.1 and HTTP/1.0 Support"> |
| |
| <p>This <strong>Connector</strong> supports all of the required features |
| of the HTTP/1.1 protocol, as described in RFCs 7230-7235, including persistent |
| connections, pipelining, expectations and chunked encoding. If the client |
| supports only HTTP/1.0 or HTTP/0.9, the |
| <strong>Connector</strong> will gracefully fall back to supporting this |
| protocol as well. No special configuration is required to enable this |
| support. The <strong>Connector</strong> also supports HTTP/1.0 |
| keep-alive.</p> |
| |
| <p>RFC 7230 requires that HTTP servers always begin their responses with |
| the highest HTTP version that they claim to support. Therefore, this |
| <strong>Connector</strong> will always return <code>HTTP/1.1</code> at |
| the beginning of its responses.</p> |
| |
| </subsection> |
| |
| <subsection name="HTTP/2 Support"> |
| |
| <p>HTTP/2 is support is provided for TLS (h2), non-TLS via HTTP upgrade (h2c) |
| and direct HTTP/2 (h2c) connections. To enable HTTP/2 support for an HTTP |
| connector the following <strong>UpgradeProtocol</strong> element must be |
| nested within the <strong>Connector</strong> with a |
| <strong>className</strong> attribute of |
| <code>org.apache.coyote.http2.Http2Protocol</code>.</p> |
| |
| <source><![CDATA[<Connector ... > |
| <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" /> |
| </Connector>]]></source> |
| |
| <p>Because Java 8's TLS implementation does not support ALPN (which is |
| required for HTTP/2 over TLS), you must be using an OpenSSL based TLS |
| implementation to enable HTTP/2 support. See the |
| <code>sslImplementationName</code> attribute of the |
| <strong>Connector</strong>.</p> |
| |
| <p>Additional configuration attributes are available. See the |
| <a href="http2.html">HTTP/2 Upgrade Protocol</a> documentation for details.</p> |
| |
| </subsection> |
| |
| <subsection name="Proxy Support"> |
| |
| <p>The <code>proxyName</code> and <code>proxyPort</code> attributes can |
| be used when Tomcat is run behind a proxy server. These attributes |
| modify the values returned to web applications that call the |
| <code>request.getServerName()</code> and <code>request.getServerPort()</code> |
| methods, which are often used to construct absolute URLs for redirects. |
| Without configuring these attributes, the values returned would reflect |
| the server name and port on which the connection from the proxy server |
| was received, rather than the server name and port to whom the client |
| directed the original request.</p> |
| |
| <p>For more information, see the |
| <a href="../proxy-howto.html">Proxy Support How-To</a>.</p> |
| |
| </subsection> |
| |
| |
| <subsection name="SSL Support"> |
| |
| <p>You can enable SSL support for a particular instance of this |
| <strong>Connector</strong> by setting the <code>SSLEnabled</code> attribute to |
| <code>true</code>.</p> |
| |
| <p>You will also need to set the <code>scheme</code> and <code>secure</code> |
| attributes to the values <code>https</code> and <code>true</code> |
| respectively, to pass correct information to the servlets.</p> |
| |
| <p>The NIO and NIO2 connectors use either the JSSE Java SSL implementation or |
| an OpenSSL implementation, whereas the APR/native connector uses OpenSSL only. |
| Prior to Tomcat 8.5, different configuration attributes were used for JSSE and |
| OpenSSL. From Tomcat 8.5 onwards, and as far as possible, common configuration |
| attributes are used for both JSSE and OpenSSL. Also if using the JSSE OpenSSL |
| implementation, configuration can be set using either the JSSE or APR |
| attributes (note: but not both types within the same configuration). This is |
| to aid simpler switching between connector implementations for SSL |
| connectors.</p> |
| |
| <p>Each secure connector must define at least one |
| <strong>SSLHostConfig</strong>. The names of the |
| <strong>SSLHostConfig</strong> elements must be unique and one of them must |
| match the <code>defaultSSLHostConfigName</code> attribute of the |
| <strong>Connector</strong>.</p> |
| |
| <p>Each <strong>SSLHostConfig</strong> must in turn define at least one |
| <strong>Certificate</strong>. The types of the <strong>Certificate</strong>s |
| must be unique.</p> |
| |
| <p>As of Tomcat 8.5, the majority of the SSL configuration attributes in the |
| <strong>Connector</strong> are deprecated. If specified, they will be used to |
| configure a <strong>SSLHostConfig</strong> and <strong>Certificate</strong> |
| for the <code>defaultSSLHostConfigName</code>. Note that if an explicit |
| <strong>SSLHostConfig</strong> element also exists for the |
| <code>defaultSSLHostConfigName</code> then that will be treated as a configuration |
| error. It is expected that Tomcat 10 will drop support for the SSL |
| configuration attributes in the <strong>Connector</strong>.</p> |
| |
| <p>For more information, see the |
| <a href="../ssl-howto.html">SSL Configuration How-To</a>.</p> |
| |
| </subsection> |
| |
| <subsection name="SSL Support - SSLHostConfig"> |
| |
| <p></p> |
| |
| <attributes> |
| |
| <attribute name="certificateRevocationListFile" required="false"> |
| <p>Name of the file that contains the concatenated certificate revocation |
| lists for the certificate authorities. The format is PEM-encoded. If not |
| defined, client certificates will not be checked against a certificate |
| revocation list (unless an OpenSSL based connector is used and |
| <strong>certificateRevocationListPath</strong> is defined). Relative paths |
| will be resolved against <code>$CATALINA_BASE</code>. JSSE based |
| connectors may also specify a URL for this attribute.</p> |
| </attribute> |
| |
| <attribute name="certificateRevocationListPath" required="false"> |
| <p>OpenSSL only.</p> |
| <p>Name of the directory that contains the certificate revocation lists |
| for the certificate authorities. The format is PEM-encoded. Relative paths |
| will be resolved against <code>$CATALINA_BASE</code>.</p> |
| </attribute> |
| |
| <attribute name="certificateVerification" required="false"> |
| <p>Set to <code>required</code> if you want the SSL stack to require a |
| valid certificate chain from the client before accepting a connection. |
| Set to <code>optional</code> if you want the SSL stack to request a client |
| Certificate, but not fail if one isn't presented. Set to |
| <code>optionalNoCA</code> if you want client certificates to be optional |
| and you don't want Tomcat to check them against the list of trusted CAs. |
| If the TLS provider doesn't support this option (OpenSSL does, JSSE does |
| not) it is treated as if <code>optional</code> was specified. A |
| <code>none</code> value (which is the default) will not require a |
| certificate chain unless the client requests a resource protected by a |
| security constraint that uses <code>CLIENT-CERT</code> authentication.</p> |
| </attribute> |
| |
| <attribute name="certificateVerificationDepth" required="false"> |
| <p>The maximum number of intermediate certificates that will be allowed |
| when validating client certificates. If not specified, the default value |
| of 10 will be used.</p> |
| </attribute> |
| |
| <attribute name="caCertificateFile" required="false"> |
| <p>OpenSSL only.</p> |
| <p>Name of the file that contains the concatenated certificates for the |
| trusted certificate authorities. The format is PEM-encoded.</p> |
| </attribute> |
| |
| <attribute name="caCertificatePath" required="false"> |
| <p>OpenSSL only.</p> |
| <p>Name of the directory that contains the certificates for the trusted |
| certificate authorities. The format is PEM-encoded.</p> |
| </attribute> |
| |
| <attribute name="ciphers" required="false"> |
| <p>The ciphers to enable using the OpenSSL syntax. (See the OpenSSL |
| documentation for the list of ciphers supported and the syntax). |
| Alternatively, a comma separated list of ciphers using the standard |
| OpenSSL cipher names or the standard JSSE cipher names may be used.</p> |
| <p>When converting from OpenSSL syntax to JSSE ciphers for JSSE based |
| connectors, the behaviour of the OpenSSL syntax parsing is kept aligned |
| with the behaviour of the OpenSSL 1.1.0 development branch.</p> |
| <p>Only the ciphers that are supported by the SSL implementation will be |
| used.</p> |
| <p>If not specified, a default (using the OpenSSL notation) of |
| <code>HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!kRSA</code> will be |
| used.</p> |
| <p>Note that, by default, the order in which ciphers are defined is |
| treated as an order of preference. See <code>honorCipherOrder</code>.</p> |
| </attribute> |
| |
| <attribute name="disableCompression" required="false"> |
| <p>OpenSSL only.</p> |
| <p>Configures if compression is disabled. The default is |
| <code>true</code>. If the OpenSSL version used does not support disabling |
| compression then the default for that OpenSSL version will be used.</p> |
| </attribute> |
| |
| <attribute name="disableSessionTickets" required="false"> |
| <p>OpenSSL only.</p> |
| <p>Disables use of TLS session tickets (RFC 5077) if set to |
| <code>true</code>. Default is <code>false</code>. Note that when TLS |
| session tickets are in use, the full peer certificate chain will only be |
| available on the first connection. Subsequent connections (that use a |
| ticket to estrablish the TLS session) will only have the peer certificate, |
| not the full chain.</p> |
| </attribute> |
| |
| <attribute name="honorCipherOrder" required="false"> |
| <p>Set to <code>true</code> to enforce the server's cipher order |
| (from the <code>ciphers</code> setting) instead of allowing |
| the client to choose the cipher. The default is <code>false</code>.</p> |
| </attribute> |
| |
| <attribute name="hostName" required="false"> |
| <p>The name of the SSL Host. This should either be the fully qualified |
| domain name (e.g. <code>tomcat.apache.org</code>) or a wild card domain |
| name (e.g. <code>*.apache.org</code>). If not specified, the default value |
| of <code>_default_</code> will be used.</p> |
| </attribute> |
| |
| <attribute name="insecureRenegotiation" required="false"> |
| <p>OpenSSL only.</p> |
| <p>Configures if insecure renegotiation is allowed. The default is |
| <code>false</code>. If the OpenSSL version used does not support |
| configuring if insecure renegotiation is allowed then the default for that |
| OpenSSL version will be used.</p> |
| </attribute> |
| |
| <attribute name="keyManagerAlgorithm" required="false"> |
| <p>JSSE only.</p> |
| <p>The <code>KeyManager</code> algorithm to be used. This defaults to |
| <code>KeyManagerFactory.getDefaultAlgorithm()</code> which returns |
| <code>SunX509</code> for Sun JVMs. IBM JVMs return |
| <code>IbmX509</code>. For other vendors, consult the JVM |
| documentation for the default value.</p> |
| </attribute> |
| |
| <attribute name="protocols" required="false"> |
| <p>The names of the protocols to support when communicating with clients. |
| This should be a list of any combination of the following: |
| </p> |
| <ul><li>SSLv2Hello</li><li>SSLv3</li><li>TLSv1</li><li>TLSv1.1</li> |
| <li>TLSv1.2</li><li>TLSv1.3</li><li>all</li></ul> |
| <p>Each token in the list can be prefixed with a plus sign ("+") |
| or a minus sign ("-"). A plus sign adds the protocol, a minus sign |
| removes it form the current list. The list is built starting from |
| an empty list.</p> |
| <p>The token <code>all</code> is an alias for |
| <code>SSLv2Hello,TLSv1,TLSv1.1,TLSv1.2,TLSv1.3</code>.</p> |
| <p>Note that <code>TLSv1.3</code> is only supported for JSSE when using a |
| JVM that implements <code>TLSv1.3</code>.</p> |
| <p>Note that <code>SSLv2Hello</code> will be ignored for OpenSSL based |
| secure connectors. If more than one protocol is specified for an OpenSSL |
| based secure connector it will always support <code>SSLv2Hello</code>. If a |
| single protocol is specified it will not support |
| <code>SSLv2Hello</code>.</p> |
| <p>Note that <code>SSLv2</code> and <code>SSLv3</code> are inherently |
| unsafe.</p> |
| <p>If not specified, the default value of <code>all</code> will be |
| used.</p> |
| </attribute> |
| |
| <attribute name="revocationEnabled" required="false"> |
| <p>JSSE only.</p> |
| <p>Should the JSSE provider enable certificate revocation checks? If |
| <strong>certificateRevocationListFile</strong> is set then this attribute |
| is ignored and revocation checks are always enabled. This attribute is |
| intended to enable revocation checks that have been configured for the |
| current JSSE provider via other means. If not specified, a default of |
| <code>false</code> is used.</p> |
| </attribute> |
| |
| <attribute name="sessionCacheSize" required="false"> |
| <p>JSSE only.</p> |
| <p>The number of SSL sessions to maintain in the session cache. Use 0 to |
| specify an unlimited cache size. If not specified, a default of 0 is |
| used.</p> |
| </attribute> |
| |
| <attribute name="sessionTimeout" required="false"> |
| <p>JSSE only.</p> |
| <p>The time, in seconds, after the creation of an SSL session that it will |
| timeout. Use 0 to specify an unlimited timeout. If not specified, a |
| default of 86400 (24 hours) is used.</p> |
| </attribute> |
| |
| <attribute name="sslProtocol" required="false"> |
| <p>JSSE only.</p> |
| <p>The SSL protocol(s) to use (a single value may enable multiple |
| protocols - see the JVM documentation for details). If not specified, the |
| default is <code>TLS</code>. The permitted values may be obtained from the |
| JVM documentation for the allowed values for algorithm when creating an |
| <code>SSLContext</code> instance e.g. |
| <a href="http://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#SSLContext"> |
| Oracle Java 7</a>. Note: There is overlap between this attribute and |
| <code>protocols</code>.</p> |
| </attribute> |
| |
| <attribute name="trustManagerClassName" required="false"> |
| <p>JSSE only.</p> |
| <p>The name of a custom trust manager class to use to validate client |
| certificates. The class must have a zero argument constructor and must |
| also implement <code>javax.net.ssl.X509TrustManager</code>. If this |
| attribute is set, the trust store attributes may be ignored.</p> |
| </attribute> |
| |
| <attribute name="truststoreAlgorithm" required="false"> |
| <p>JSSE only.</p> |
| <p>The algorithm to use for truststore. If not specified, the default |
| value returned by |
| <code>javax.net.ssl.TrustManagerFactory.getDefaultAlgorithm()</code> is |
| used.</p> |
| </attribute> |
| |
| <attribute name="truststoreFile" required="false"> |
| <p>JSSE only.</p> |
| <p>The trust store file to use to validate client certificates. The |
| default is the value of the <code>javax.net.ssl.trustStore</code> system |
| property. If neither this attribute nor the default system property is |
| set, no trust store will be configured. Relative paths |
| will be resolved against <code>$CATALINA_BASE</code>. A URL may also be |
| used for this attribute.</p> |
| </attribute> |
| |
| <attribute name="truststorePassword" required="false"> |
| <p>JSSE only.</p> |
| <p>The password to access the trust store. The default is the value of the |
| <code>javax.net.ssl.trustStorePassword</code> system property. If that |
| property is null, no trust store password will be configured. If an |
| invalid trust store password is specified, a warning will be logged and an |
| attempt will be made to access the trust store without a password which |
| will skip validation of the trust store contents.</p> |
| </attribute> |
| |
| <attribute name="truststoreProvider" required="false"> |
| <p>JSSE only.</p> |
| <p>The name of the truststore provider to be used for the server |
| certificate. The default is the value of the |
| <code>javax.net.ssl.trustStoreProvider</code> system property. If |
| that property is null, the value of <code>keystoreProvider</code> is used |
| as the default. If neither this attribute, the default system property nor |
| <code>keystoreProvider</code> is set, the list of registered providers is |
| traversed in preference order and the first provider that supports the |
| <code>truststoreType</code> is used. |
| </p> |
| </attribute> |
| |
| <attribute name="truststoreType" required="false"> |
| <p>JSSE only.</p> |
| <p>The type of key store used for the trust store. The default is the |
| value of the <code>javax.net.ssl.trustStoreType</code> system property. If |
| that property is null, a single certificate has been configured for this |
| TLS virtual host and that certificate has a <code>keystoreType</code> that |
| is not <code>PKCS12</code> then the default will be the |
| <code>keystoreType</code> of the single certificate. If none of these |
| identify a default, the default will be <code>JKS</code>.</p> |
| </attribute> |
| |
| </attributes> |
| |
| </subsection> |
| |
| <subsection name="SSL Support - Certificate"> |
| |
| <p></p> |
| |
| <attributes> |
| |
| <attribute name="certificateFile" required="true"> |
| <p>Name of the file that contains the server certificate. The format is |
| PEM-encoded. Relative paths will be resolved against |
| <code>$CATALINA_BASE</code>.</p> |
| <p>In addition to the certificate, the file can also contain as optional |
| elements DH parameters and/or an EC curve name for ephemeral keys, as |
| generated by <code>openssl dhparam</code> and <code>openssl ecparam</code>, |
| respectively. The output of the respective OpenSSL command can simply |
| be concatenated to the certificate file.</p> |
| </attribute> |
| |
| <attribute name="certificateChainFile" required="false"> |
| <p>Name of the file that contains the certificate chain associated with |
| the server certificate used. The format is |
| PEM-encoded. Relative paths will be resolved against |
| <code>$CATALINA_BASE</code>.</p> |
| <p>The certificate chain used for Tomcat should not include the server |
| certificate as its first element.</p> |
| <p>Note that when using more than one certificate for different types, |
| they all must use the same certificate chain.</p> |
| </attribute> |
| |
| <attribute name="certificateKeyAlias" required="false"> |
| <p>JSSE only.</p> |
| <p>The alias used for the server key and certificate in the keystore. If |
| not specified, the first key read from the keystore will be used. The |
| order in which keys are read from the keystore is implementation |
| dependent. It may not be the case that keys are read from the keystore in |
| the same order as they were added. If more than one key is present in the |
| keystore it is strongly recommended that a keyAlias is configured to |
| ensure that the correct key is used.</p> |
| </attribute> |
| |
| <attribute name="certificateKeyFile" required="false"> |
| <p>Name of the file that contains the server private key. The format is |
| PEM-encoded. The default value is the value of |
| <strong>certificateFile</strong> and in this case both certificate and |
| private key have to be in this file (NOT RECOMMENDED). Relative paths will |
| be resolved against <code>$CATALINA_BASE</code>.</p> |
| </attribute> |
| |
| <attribute name="certificateKeyPassword" required="false"> |
| <p>The password used to access the private key associated with the server |
| certificate from the specified file.</p> |
| <p>If not specified, the default behaviour for JSSE is to use the |
| <strong>certificateKeystorePassword</strong>. For OpenSSL the default |
| behaviour is not to use a password.</p> |
| </attribute> |
| |
| <attribute name="certificateKeystoreFile" required="false"> |
| <p>JSSE only.</p> |
| <p>The pathname of the keystore file where you have stored the server |
| certificate and key to be loaded. By default, the pathname is the file |
| <code>.keystore</code> in the operating system home directory of the user |
| that is running Tomcat. If your <code>keystoreType</code> doesn't need a |
| file use <code>""</code> (empty string) or <code>NONE</code> for this |
| parameter. Relative paths will be resolved against |
| <code>$CATALINA_BASE</code>. A URI may also be used for this attribute. |
| When using a domain keystore (<code>keystoreType</code> of |
| <code>DKS</code>), this parameter should be the URI to the domain |
| keystore.</p> |
| </attribute> |
| |
| <attribute name="certificateKeystorePassword" required="false"> |
| <p>JSSE only.</p> |
| <p>The password to use to access the keystore containing the server's |
| private key and certificate. If not specified, a default of |
| <code>changeit</code> will be used.</p> |
| </attribute> |
| |
| <attribute name="certificateKeystoreProvider" required="false"> |
| <p>JSSE only.</p> |
| <p>The name of the keystore provider to be used for the server |
| certificate. If not specified, the value of the system property |
| <code>javax.net.ssl.keyStoreProvider</code> is used. If neither this |
| attribute nor the system property are set, the list of registered |
| providers is traversed in preference order and the first provider that |
| supports the <code>keystoreType</code> is used. |
| </p> |
| </attribute> |
| |
| <attribute name="certificateKeystoreType" required="false"> |
| <p>JSSE only.</p> |
| <p>The type of keystore file to be used for the server certificate. |
| If not specified, the value of the system property |
| <code>javax.net.ssl.keyStoreType</code> is used. If neither this attribute |
| nor the system property are set, a default value of "<code>JKS</code>". is |
| used.</p> |
| </attribute> |
| |
| <attribute name="type" required="false"> |
| <p>The type of certificate. This is used to identify the ciphers that are |
| compatible with the certificate. It must be one of <code>UNDEFINED</code>, |
| <code>RSA</code>, <code>DSS</code> or <code>EC</code>. If only one |
| <strong>Certificate</strong> is nested within a <code>SSLHostConfig</code> |
| then this attribute is not required and will default to |
| <code>UNDEFINED</code>. If multiple <strong>Certificate</strong>s are |
| nested within a <code>SSLHostConfig</code> then this attribute is required |
| and each <strong>Certificate</strong> must have a unique type.</p> |
| </attribute> |
| |
| </attributes> |
| |
| </subsection> |
| |
| <subsection name="SSL Support - Connector - NIO and NIO2"> |
| |
| <p>When APR/native is enabled, the connectors will default to using OpenSSL through JSSE, |
| which may be more optimized than the JSSE Java implementation depending on the processor being used, |
| and can be complemented with many commercial accelerator components.</p> |
| |
| <p>The following NIO and NIO2 SSL configuration attributes are not specific to |
| a virtual host and, therefore, must be configured on the connector.</p> |
| |
| <attributes> |
| |
| <attribute name="sniParseLimit" required="false"> |
| <p>In order to implement SNI support, Tomcat has to parse the first TLS |
| message received on a new TLS connection (the client hello) to extract the |
| requested server name. The message needs to be buffered so it can then be |
| passed to the JSSE implementation for normal TLS processing. In theory, |
| this first message could be very large although in practice it is |
| typically a few hundred bytes. This attribute sets the maximum message |
| size that Tomcat will buffer. If a message exceeds this size, the |
| connection will be configured as if no server name was indicated by the |
| client. If not specified a default of <code>65536</code> (64k) will be |
| used.</p> |
| </attribute> |
| |
| <attribute name="sslImplementationName" required="false"> |
| <p>The class name of the SSL implementation to use. If not specified and |
| the tomcat-native library is not installed, the |
| default of <code>org.apache.tomcat.util.net.jsse.JSSEImplementation</code> |
| will be used which wraps JVM's default JSSE provider. Note that the |
| JVM can be configured to use a different JSSE provider as the default. |
| Tomcat also bundles a special SSL implementation for JSSE that is backed |
| by OpenSSL. To enable it, the native library should be enabled as if |
| intending to use the APR connector, and Tomcat will automatically enable it |
| and the default value of this attribute becomes |
| <code>org.apache.tomcat.util.net.openssl.OpenSSLImplementation</code>. |
| In that case, the attributes from either JSSE and OpenSSL |
| configuration styles can be used, as long as the two types are not mixed |
| (for example, it is not allowed to define use of a Java keystore and |
| specify a separate pem private key using the OpenSSL attribute).</p> |
| </attribute> |
| |
| </attributes> |
| |
| </subsection> |
| |
| <subsection name="SSL Support - Connector - NIO and NIO2 (deprecated)"> |
| |
| <p>The following NIO and NIO2 SSL configuration attributes have been |
| deprecated in favor of the default |
| <a href="#SSL_Support_-_SSLHostConfig">SSLHostConfig</a> element. |
| </p> |
| |
| <attributes> |
| |
| <attribute name="algorithm" required="false"> |
| <p>This is an alias for the <code>keyManagerAlgorithm</code> attribute of |
| the default <a href="#SSL_Support_-_SSLHostConfig">SSLHostConfig</a> |
| element.</p> |
| </attribute> |
| |
| <attribute name="ciphers" required="false"> |
| <p>This is an alias for the <code>ciphers</code> attribute of the default |
| <a href="#SSL_Support_-_SSLHostConfig">SSLHostConfig</a> element.</p> |
| </attribute> |
| |
| <attribute name="clientAuth" required="false"> |
| <p>This is an alias for the <code>certificateVerification</code> attribute |
| of the default <a href="#SSL_Support_-_SSLHostConfig">SSLHostConfig</a> |
| element.</p> |
| </attribute> |
| |
| <attribute name="crlFile" required="false"> |
| <p>This is an alias for the <code>certificateRevocationListFile</code> |
| attribute of the default |
| <a href="#SSL_Support_-_SSLHostConfig">SSLHostConfig</a> element.</p> |
| </attribute> |
| |
| <attribute name="keyAlias" required="false"> |
| <p>This is an alias for the <code>certificateKeyAlias</code> attribute of |
| the first <a href="#SSL_Support_-_Certificate">Certificate</a> element |
| nested in the default |
| <a href="#SSL_Support_-_SSLHostConfig">SSLHostConfig</a> element.</p> |
| </attribute> |
| |
| <attribute name="keyPass" required="false"> |
| <p>This is an alias for the <code>certificateKeyPassword</code> attribute |
| of the first <a href="#SSL_Support_-_Certificate">Certificate</a> element |
| nested in the default |
| <a href="#SSL_Support_-_SSLHostConfig">SSLHostConfig</a> element.</p> |
| </attribute> |
| |
| <attribute name="keystoreFile" required="false"> |
| <p>This is an alias for the <code>certificateKeystoreFile</code> attribute |
| of the first <a href="#SSL_Support_-_Certificate">Certificate</a> element |
| nested in the default |
| <a href="#SSL_Support_-_SSLHostConfig">SSLHostConfig</a> element.</p> |
| </attribute> |
| |
| <attribute name="keystorePass" required="false"> |
| <p>This is an alias for the <code>certificateKeystorePassword</code> |
| attribute of the first |
| <a href="#SSL_Support_-_Certificate">Certificate</a> element nested in the |
| default <a href="#SSL_Support_-_SSLHostConfig">SSLHostConfig</a> |
| element.</p> |
| </attribute> |
| |
| <attribute name="keystoreProvider" required="false"> |
| <p>This is an alias for the <code>certificateKeystoreProvider</code> |
| attribute of the first |
| <a href="#SSL_Support_-_Certificate">Certificate</a> element nested in the |
| default <a href="#SSL_Support_-_SSLHostConfig">SSLHostConfig</a> |
| element.</p> |
| </attribute> |
| |
| <attribute name="keystoreType" required="false"> |
| <p>This is an alias for the <code>certificateKeystoreType</code> attribute |
| of the first <a href="#SSL_Support_-_Certificate">Certificate</a> element |
| nested in the default |
| <a href="#SSL_Support_-_SSLHostConfig">SSLHostConfig</a> element.</p> |
| </attribute> |
| |
| <attribute name="sessionCacheSize" required="false"> |
| <p>This is an alias for the <code>sessionCacheSize</code> attribute of the |
| default <a href="#SSL_Support_-_SSLHostConfig">SSLHostConfig</a> |
| element.</p> |
| </attribute> |
| |
| <attribute name="sessionTimeout" required="false"> |
| <p>This is an alias for the <code>sessionTimeout</code> attribute of the |
| default <a href="#SSL_Support_-_SSLHostConfig">SSLHostConfig</a> |
| element.</p> |
| </attribute> |
| |
| <attribute name="sslEnabledProtocols" required="false"> |
| <p>This is an alias for the <code>protocols</code> attribute of the |
| default <a href="#SSL_Support_-_SSLHostConfig">SSLHostConfig</a> |
| element.</p> |
| </attribute> |
| |
| <attribute name="sslProtocol" required="false"> |
| <p>This is an alias for the <code>sslProtocol</code> attribute of the |
| default <a href="#SSL_Support_-_SSLHostConfig">SSLHostConfig</a> |
| element.</p> |
| </attribute> |
| |
| <attribute name="trustManagerClassName" required="false"> |
| <p>This is an alias for the <code>trustManagerClassName</code> attribute |
| of the default <a href="#SSL_Support_-_SSLHostConfig">SSLHostConfig</a> |
| element.</p> |
| </attribute> |
| |
| <attribute name="trustMaxCertLength" required="false"> |
| <p>This is an alias for the <code>certificateVerificationDepth</code> |
| attribute of the default |
| <a href="#SSL_Support_-_SSLHostConfig">SSLHostConfig</a> element.</p> |
| </attribute> |
| |
| <attribute name="truststoreAlgorithm" required="false"> |
| <p>This is an alias for the <code>truststoreAlgorithm</code> attribute of |
| the default <a href="#SSL_Support_-_SSLHostConfig">SSLHostConfig</a> |
| element.</p> |
| </attribute> |
| |
| <attribute name="truststoreFile" required="false"> |
| <p>This is an alias for the <code>truststoreFile</code> attribute of |
| the default <a href="#SSL_Support_-_SSLHostConfig">SSLHostConfig</a> |
| element.</p> |
| </attribute> |
| |
| <attribute name="truststorePass" required="false"> |
| <p>This is an alias for the <code>truststorePassword</code> attribute of |
| the default <a href="#SSL_Support_-_SSLHostConfig">SSLHostConfig</a> |
| element.</p> |
| </attribute> |
| |
| <attribute name="truststoreProvider" required="false"> |
| <p>This is an alias for the <code>truststoreProvider</code> attribute of |
| the default <a href="#SSL_Support_-_SSLHostConfig">SSLHostConfig</a> |
| element.</p> |
| </attribute> |
| |
| <attribute name="truststoreType" required="false"> |
| <p>This is an alias for the <code>truststoreType</code> attribute of |
| the default <a href="#SSL_Support_-_SSLHostConfig">SSLHostConfig</a> |
| element.</p> |
| </attribute> |
| |
| <attribute name="useServerCipherSuitesOrder" required="false"> |
| <p>This is an alias for the <code>honorCipherOrder</code> attribute of the |
| default <a href="#SSL_Support_-_SSLHostConfig">SSLHostConfig</a> |
| element.</p> |
| </attribute> |
| |
| </attributes> |
| |
| </subsection> |
| |
| <subsection name="SSL Support - Connector - APR/Native (deprecated)"> |
| |
| <p>When APR/native is enabled, the HTTPS connector will use a socket poller |
| for keep-alive, increasing scalability of the server. It also uses OpenSSL, |
| which may be more optimized than JSSE depending on the processor being used, |
| and can be complemented with many commercial accelerator components. Unlike |
| the HTTP connector, the HTTPS connector cannot use sendfile to optimize static |
| file processing.</p> |
| |
| <p>The HTTPS APR/native connector has the same attributes than the HTTP |
| APR/native connector, but adds OpenSSL specific ones. For the full details on |
| using OpenSSL, please refer to OpenSSL documentations and the many books |
| available for it (see the <a href="http://www.openssl.org">Official OpenSSL |
| website</a>). The SSL specific attributes for the APR/native connector are: |
| </p> |
| |
| <attributes> |
| |
| <attribute name="SSLCACertificateFile" required="false"> |
| <p>This is an alias for the <code>caCertificateFile</code> |
| attribute of the default |
| <a href="#SSL_Support_-_SSLHostConfig">SSLHostConfig</a> element.</p> |
| </attribute> |
| |
| <attribute name="SSLCACertificatePath" required="false"> |
| <p>This is an alias for the <code>caCertificatePath</code> |
| attribute of the default |
| <a href="#SSL_Support_-_SSLHostConfig">SSLHostConfig</a> element.</p> |
| </attribute> |
| |
| <attribute name="SSLCARevocationFile" required="false"> |
| <p>This is an alias for the <code>certificateRevocationListFile</code> |
| attribute of the default |
| <a href="#SSL_Support_-_SSLHostConfig">SSLHostConfig</a> element.</p> |
| </attribute> |
| |
| <attribute name="SSLCARevocationPath" required="false"> |
| <p>This is an alias for the <code>certificateRevocationListPath</code> |
| attribute of the default |
| <a href="#SSL_Support_-_SSLHostConfig">SSLHostConfig</a> element.</p> |
| </attribute> |
| |
| <attribute name="SSLCertificateFile" required="true"> |
| <p>This is an alias for the <code>certificateFile</code> attribute of the |
| first <a href="#SSL_Support_-_Certificate">Certificate</a> element nested |
| in the default <a href="#SSL_Support_-_SSLHostConfig">SSLHostConfig</a> |
| element.</p> |
| </attribute> |
| |
| <attribute name="SSLCertificateKeyFile" required="false"> |
| <p>This is an alias for the <code>certificateKeyFile</code> attribute of the |
| first <a href="#SSL_Support_-_Certificate">Certificate</a> element nested |
| in the default <a href="#SSL_Support_-_SSLHostConfig">SSLHostConfig</a> |
| element.</p> |
| </attribute> |
| |
| <attribute name="SSLCipherSuite" required="false"> |
| <p>This is an alias for the <code>ciphers</code> attribute of the default |
| <a href="#SSL_Support_-_SSLHostConfig">SSLHostConfig</a> element.</p> |
| </attribute> |
| |
| <attribute name="SSLDisableCompression" required="false"> |
| <p>This is an alias for the <code>disableCompression</code> attribute of |
| the default <a href="#SSL_Support_-_SSLHostConfig">SSLHostConfig</a> |
| element.</p> |
| </attribute> |
| |
| <attribute name="SSLHonorCipherOrder" required="false"> |
| <p>This is an alias for the <code>honorCipherOrder</code> attribute of the |
| default <a href="#SSL_Support_-_SSLHostConfig">SSLHostConfig</a> |
| element.</p> |
| </attribute> |
| |
| <attribute name="SSLPassword" required="false"> |
| <p>This is an alias for the <code>certificateKeyPassword</code> attribute |
| of the first <a href="#SSL_Support_-_Certificate">Certificate</a> element |
| nested in the default |
| <a href="#SSL_Support_-_SSLHostConfig">SSLHostConfig</a> element.</p> |
| </attribute> |
| |
| <attribute name="SSLProtocol" required="false"> |
| <p>This is an alias for the <code>protocols</code> attribute of the |
| default <a href="#SSL_Support_-_SSLHostConfig">SSLHostConfig</a> |
| element.</p> |
| </attribute> |
| |
| <attribute name="SSLVerifyClient" required="false"> |
| <p>This is an alias for the <code>certificateVerification</code> attribute |
| of the default <a href="#SSL_Support_-_SSLHostConfig">SSLHostConfig</a> |
| element.</p> |
| </attribute> |
| |
| <attribute name="SSLVerifyDepth" required="false"> |
| <p>This is an alias for the <code>certificateVerificationDepth</code> |
| attribute of the default |
| <a href="#SSL_Support_-_SSLHostConfig">SSLHostConfig</a> element.</p> |
| </attribute> |
| |
| <attribute name="SSLDisableSessionTickets" required="false"> |
| <p>This is an alias for the <code>disableSessionTickets</code> attribute |
| of the default <a href="#SSL_Support_-_SSLHostConfig">SSLHostConfig</a> |
| element.</p> |
| </attribute> |
| |
| </attributes> |
| |
| </subsection> |
| |
| <subsection name="Connector Comparison"> |
| |
| <p>Below is a small chart that shows how the connectors differ.</p> |
| |
| <table class="defaultTable" style="text-align: center;"> |
| <tr> |
| <th /> |
| <th style="text-align: center;">Java Nio Connector<br />NIO</th> |
| <th style="text-align: center;">Java Nio2 Connector<br />NIO2</th> |
| <th style="text-align: center;">APR/native Connector<br />APR</th> |
| </tr> |
| <tr> |
| <th>Classname</th> |
| <td><code class="noHighlight">Http11NioProtocol</code></td> |
| <td><code class="noHighlight">Http11Nio2Protocol</code></td> |
| <td><code class="noHighlight">Http11AprProtocol</code></td> |
| </tr> |
| <tr> |
| <th>Tomcat Version</th> |
| <td>6.x onwards</td> |
| <td>8.x onwards</td> |
| <td>5.5.x onwards</td> |
| </tr> |
| <tr> |
| <th>Support Polling</th> |
| <td>YES</td> |
| <td>YES</td> |
| <td>YES</td> |
| </tr> |
| <tr> |
| <th>Polling Size</th> |
| <td><code class="noHighlight">maxConnections</code></td> |
| <td><code class="noHighlight">maxConnections</code></td> |
| <td><code class="noHighlight">maxConnections</code></td> |
| </tr> |
| <tr> |
| <th>Read Request Headers</th> |
| <td>Non Blocking</td> |
| <td>Non Blocking</td> |
| <td>Non Blocking</td> |
| </tr> |
| <tr> |
| <th>Read Request Body</th> |
| <td>Blocking</td> |
| <td>Blocking</td> |
| <td>Blocking</td> |
| </tr> |
| <tr> |
| <th>Write Response Headers and Body</th> |
| <td>Blocking</td> |
| <td>Blocking</td> |
| <td>Blocking</td> |
| </tr> |
| <tr> |
| <th>Wait for next Request</th> |
| <td>Non Blocking</td> |
| <td>Non Blocking</td> |
| <td>Non Blocking</td> |
| </tr> |
| <tr> |
| <th>SSL Support</th> |
| <td>Java SSL or OpenSSL</td> |
| <td>Java SSL or OpenSSL</td> |
| <td>OpenSSL</td> |
| </tr> |
| <tr> |
| <th>SSL Handshake</th> |
| <td>Non blocking</td> |
| <td>Non blocking</td> |
| <td>Blocking</td> |
| </tr> |
| <tr> |
| <th>Max Connections</th> |
| <td><code class="noHighlight">maxConnections</code></td> |
| <td><code class="noHighlight">maxConnections</code></td> |
| <td><code class="noHighlight">maxConnections</code></td> |
| </tr> |
| </table> |
| |
| </subsection> |
| </section> |
| |
| |
| </body> |
| |
| </document> |