目录
  • 介绍
  • 属性
    1. 共同属性
    2. 标准实施
    3. Java TCP套接字属性
    4. BIO特定配置
    5. NIO特定配置
    6. APR /本机特定配置
  • 嵌套组件
  • 特殊功能
    1. HTTP / 1.1和HTTP / 1.0支持
    2. 代理支持
    3. SSL支持
      1. SSL支持-BIO和NIO
      2. SSL支持-APR /本机
    4. 密钥库类型
    5. 连接器比较
介绍

HTTP连接器元件代表一个 连接器组件支持HTTP / 1.1协议。除了执行servlet和JSP页面的功能外,它还使Catalina能够充当独立的Web服务器。该组件的特定实例侦听服务器上特定TCP端口号上的连接。可以将一个或多个此类连接器配置为单个服务的一部分,每个连接器都转发到关联的引擎以执行请求处理并创建响应。

如果您希望配置的连接器,用于使用AJP协议(如对Web服务器的连接 mod_jk 1.2.x接口为Apache 1.3),请参阅 AJP连接器文档。

每个传入请求在该请求的持续时间内都需要一个线程。如果接收到的并发请求多于当前可用请求处理线程所能处理的数量,则将创建其他线程,直到配置的最大值(该maxThreads属性的值)为止。如果收到更多同时请求,则将它们堆积在由Connector创建的服务器套接字内,直到配置的最大值(acceptCount 属性的值)为止。任何其他同时请求都将收到“连接被拒绝”错误,直到有足够的资源来处理它们为止。

属性
共同属性

连接器的所有实现均 支持以下属性:

属性 描述
allowTrace

一个布尔值,可用于启用或禁用TRACE HTTP方法。如果未指定,则此属性设置为false。

asyncTimeout

异步请求的默认超时(以毫秒为单位)。如果未指定,则此属性设置为10000(10秒)。

discardFacades

一个布尔值,可用于启用或禁用隔离容器内部请求处理对象的外观对象的回收。如果设置为truefacades,那么将在每次请求后将其设置为垃圾回收,否则它们将被重用。启用安全管理器后,此设置无效。如果未指定,则将此属性设置为org.apache.catalina.connector.RECYCLE_FACADES系统属性的值 ,或者false如果未设置。

enableLookups

设置为true是否要调用以 request.getRemoteHost()执行DNS查找以返回远程客户端的实际主机名。设置为false跳过DNS查找并改为以字符串形式返回IP地址(从而提高性能)。默认情况下,DNS查找被禁用。

encodedSolidusHandling

设置为reject请求路径时,包含%2f序列的路径 将被400响应拒绝。当设置为decode请求路径时,包含%2f 序列的路径将对该序列进行解码,/同时将其他%nn序列解码。当设置为 passthrough请求路径时,包含%2f 序列的路径将在%2f序列不变的情况下进行处理。如果未指定,则默认值为reject。如果设置了不赞成使用的系统属性, org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH则可以修改此默认值。

maxHeaderCount

容器所允许的请求中的最大标头数。标头超过指定限制的请求将被拒绝。小于0的值表示没有限制。如果未指定,则使用默认值100。

maxParameterCount

容器将自动解析的参数和值对的最大数量(GET加POST)。超出此限制的参数和值对将被忽略。小于0的值表示没有限制。如果未指定,则使用默认值10000。请注意, FailedRequestFilter 过滤器可用于拒绝达到限制的请求。

maxPostSize

容器FORM URL参数解析将处理的POST的最大大小(以字节为单位)。可以通过将此属性设置为小于零的值来禁用该限制。如果未指定,则此属性设置为2097152(2兆字节)。请注意, FailedRequestFilter 可以使用拒绝超过此限制的请求。

maxSavePostSize

在FORM或CLIENT-CERT身份验证期间,容器将保存/缓冲的POST的最大大小(以字节为单位)。对于这两种身份验证,将在对用户进行身份验证之前保存/缓冲POST。对于CLIENT-CERT身份验证,在SSL握手期间将对POST进行缓冲,并在处理请求时将其清空。对于FORM身份验证,在将用户重定向到登录表单的同时保存POST,并将保留该POST,直到用户成功进行身份验证或与身份验证请求关联的会话到期为止。可以通过将此属性设置为-1来禁用该限制。将该属性设置为零将禁用身份验证期间的POST数据保存。如果未指定,

parseBodyMethods

请求主体所使用的HTTP方法的逗号分隔列表application/x-www-form-urlencoded将被解析为与POST相同的请求参数。这在想要支持PUT请求的POST样式语义的RESTful应用程序中很有用。注意,除POSTTomcat之外,任何其他设置都会导致Tomcat行为与Servlet规范的意图背道而驰。根据HTTP规范,此处特别禁止使用HTTP方法TRACE。默认是POST

port

连接器 将在其上创建服务器套接字并等待传入​​连接的TCP端口号。您的操作系统将仅允许一个服务器应用程序侦听特定IP地址上的特定端口号。如果使用特殊值0(零),则Tomcat将随机选择一个空闲端口用于此连接器。这通常仅在嵌入式和测试应用程序中有用。

protocol

设置协议以处理传入流量。默认值为 HTTP/1.1使用自动切换机制来选择基于阻塞Java的连接器或基于APR / native的连接器。如果PATH(Windows)或LD_LIBRARY_PATH(在大多数Unix系统上)环境变量包含Tomcat本机库,则将使用APR /本机连接器。如果找不到本机库,则将使用基于阻塞Java的连接器。请注意,APR /本机连接器的HTTPS设置与Java连接器的设置不同。
要使用显式协议而不是依赖于上述自动切换机制,可以使用以下值:
org.apache.coyote.http11.Http11Protocol-阻止Java连接器
org.apache.coyote.http11.Http11NioProtocol-非阻塞Java连接器
org.apache.coyote.http11.Http11AprProtocol-APR /本机连接器。
也可以使用自定义实现。
看看我们的连接器比较表。两个Java连接器的配置对于http和https是相同的。
有关APR连接器和特定于APR的SSL设置的更多信息,请访问APR文档

proxyName

如果在代理配置中使用了此连接器,请配置此属性以指定要对调用返回的服务器名称request.getServerName()。有关更多信息,请参见代理支持。

proxyPort

如果在代理配置中使用了此连接器,请配置此属性以指定要返回的服务器端口request.getServerPort()。有关更多信息,请参见代理支持。

redirectPort

如果此连接器支持非SSL请求,并且收到一个<security-constraint>要求进行SSL传输匹配 的请求,则Catalina将自动将请求重定向到此处指定的端口号。

scheme

将此属性设置为希望通过调用返回的协议的名称request.getScheme()。例如,https对于SSL连接器,您可以将此属性设置为“ ”。默认值为“ http”。

secure

将此属性设置为,true如果您希望调用request.isSecure()以返回true 此连接器收到的请求。您可能希望在从SSL加速器(例如加密卡,SSL设备甚至Web服务器)接收数据的SSL连接器或非SSL连接器上使用它。默认值为false

URIEncoding

在%xx解码URL之后,此参数指定用于解码URI字节的字符编码。如果未指定,将使用ISO-8859-1。

useBodyEncodingForURI

这指定是否应将contentType中指定的编码用于URI查询参数,而不是使用URIEncoding。出现此设置是为了与Tomcat 4.1.x兼容,其中在contentType中指定的编码或使用Request.setCharacterEncoding方法显式设置的编码也用于URL中的参数。默认值为false

注意: 1)此设置仅适用于请求的查询字符串。URIEncoding与之不同的是,它不影响请求URI的路径部分。2)如果请求字符编码未知(浏览器未提供,也未由SetCharacterEncodingFilterRequest.setCharacterEncoding方法设置或由类似过滤器设置 ),则默认编码始终为“ ISO-8859-1”。该URIEncoding设置对此默认值无效。

useIPVHosts

将此属性设置true为可使Tomcat使用接收请求的IP地址来确定将请求发送到的主机。默认值为false

xpoweredBy

将此属性设置true为可使Tomcat使用规范中建议的标头宣传对Servlet规范的支持。默认值为false

标准实施

标准HTTP连接器(BIO,NIO和APR / native)除上面列出的通用连接器属性外,还支持以下属性。

属性 描述
acceptCount

使用所有可能的请求处理线程时,传入连接请求的最大队列长度。队列已满时收到的任何请求都将被拒绝。默认值为100。

acceptorThreadCount

用于接受连接的线程数。在多CP​​U机器上增加此值,尽管您实际上并不需要超过此值2。另外,在有许多非保持活动连接的情况下,您可能还希望增加此值。默认值为 1

acceptorThreadPriority

受体线程的优先级。用于接受新连接的线程。默认值为5java.lang.Thread.NORM_PRIORITY常数的值 )。有关java.lang.Thread此优先级的含义的更多详细信息,请参见该类的JavaDoc 。

address

对于具有多个IP地址的服务器,此属性指定将使用哪个地址在指定端口上进行侦听。默认情况下,连接器将侦听所有本地地址。除非JVM被配置以其他方式使用的系统属性,基于Java连接器(BIO,NIO)将当与任一被配置在两个IPv4和IPv6地址听0.0.0.0::。如果配置为0.0.0.0,则APR /本机连接器将仅侦听IPv4地址,如果配置为 ,则将侦听IPv6地址和等效的IPv4地址::

allowHostHeaderMismatch

默认情况下,Tomcat将允许在请求行中指定主机但在主机标头中指定其他主机的请求。可以通过将此属性设置为来启用此检查false。如果未指定,则默认为true

allowedTrailerHeaders

默认情况下,Tomcat在处理分块输入时将忽略所有尾部标头。对于要处理的标题,必须将其添加到此逗号分隔的标题名称列表中。

bindOnInit

控制何时绑定连接器使用的套接字。默认情况下,在启动连接器时绑定它,而在销毁连接器时取消绑定。如果设置为false,则套接字将在连接器启动时绑定,而在连接器停止时取消绑定。

compressibleMimeType

该值为逗号分隔的MIME类型列表,可以对其使用HTTP压缩。默认值为 text/html,text/xml,text/plain,text/css,text/javascript,application/javascript 

compression

所述连接器可在试图节省服务器的带宽使用HTTP / 1.1 GZIP压缩。该参数的可接受值为“ off”(禁用压缩),“ on”(允许压缩,这将导致压缩文本数据),“ force”(在所有情况下均强制压缩)或数字整数值(即等效于“ on”,但指定在压缩输出之前的最小数据量)。如果内容长度未知,并且压缩设置为“ on”或更具攻击性,则输出也将被压缩。如果未指定,则此属性设置为“ off”。

注意:在使用压缩(节省带宽)和使用sendfile功能(节省CPU周期)之间需要权衡。如果连接器支持sendfile功能(例如NIO连接器),则使用sendfile将优先于压缩。症状是大于48 Kb的静态文件将以未压缩的形式发送。您可以通过设置useSendfile连接器的属性来关闭sendfile,如下所述,或者在DefaultServlet的配置中(默认值 conf/web.xmlweb.xmlWeb应用程序的)更改sendfile的使用阈值 。

compressionMinSize

如果压缩设置为“ on”,则此属性可用于指定压缩输出之前的最小数据量。如果未指定,则此属性默认为“ 2048”。

connectionLinger

关闭连接器时,此连接器使用的插座停留的秒数 。默认值是-1禁用套接字延迟。

connectionTimeout

接受连接后,此连接器将等待要显示的请求URI行的毫秒数。使用值-1表示没有(即无限)超时。默认值为60000(即60秒),但请注意,Tomcat附带的标准server.xml将其设置为20000(即20秒)。除非disableUploadTimeout设置为false,否则在读取请求正文(如果有)时也会使用此超时。

connectionUploadTimeout

指定在进行数据上载时要使用的超时(以毫秒为单位)。仅当disableUploadTimeout设置为时,此选项才生效 false

disableUploadTimeout

此标志允许Servlet容器在数据上载期间使用不同的(通常更长的)连接超时。如果未指定,则将此属性设置为true禁用此较长的超时。

executor

对Executor 元素中名称的引用。如果设置了此属性,并且命名的执行程序存在,则连接器将使用该执行程序,所有其他线程属性将被忽略。请注意,如果未为连接器指定共享执行器,则连接器将使用私有的内部执行器来提供线程池。

executorTerminationTimeoutMillis

私有内部执行器在继续执行停止连接器的过程之前将等待请求处理线程终止的时间。如果未设置,则0BIO连接器的默认值为(零),5000NIO和APR / native连接器的默认值为(5秒)。

keepAliveTimeout

连接器在关闭连接之前将等待另一个HTTP请求的毫秒数。默认值是使用为connectionTimeout属性设置的值 。使用值-1表示没有(即无限)超时。

maxConnections

服务器在任何给定时间将接受和处理的最大连接数。达到此数目后,服务器将接受但不处理另一个连接。在处理的连接数降至maxConnections以下之前,该附加连接将被阻止,此时服务器将再次开始接受和处理新的连接。请注意,一旦达到限制,操作系统仍然可以根据该acceptCount设置接受连接。默认值因连接器类型而异。对于BIO,除非执行程序,否则默认值为maxThreads的值 在这种情况下,将使用默认值,即执行程序的maxThreads值。对于NIO,默认值为10000。对于APR /本机,默认值为8192

仅对于NIO,将值设置为-1将禁用maxConnections功能,并且不计算连接数。

maxCookieCount

请求允许的Cookie的最大数量。小于零的值表示没有限制。如果未指定,将使用默认值200。

maxExtensionSize

限制HTTP块请求中的块扩展的总长度。如果值为-1,则不施加任何限制。如果未指定,8192将使用默认值。

maxHttpHeaderSize

请求和响应HTTP标头的最大大小,以字节为单位。如果未指定,则此属性设置为8192(8 KB)。

maxKeepAliveRequests

在服务器关闭连接之前可以管道传输的HTTP请求的最大数量。将此属性设置为1将禁用HTTP / 1.0保持活动以及HTTP / 1.1保持活动和流水线。将此设置为-1将允许无限数量的流水线或保持活动的HTTP请求。如果未指定,则此属性设置为100。

maxSwallowSize

Tomcat会为中止的上载而吞下的请求正文字节的最大数量(不包括传输编码开销)。上载异常终止是指Tomcat知道将忽略请求正文,但客户端仍将其发送。如果Tomcat不吞咽该主体,则客户端不太可能看到响应。如果未指定,将使用默认值2097152(2兆字节)。小于零的值表示不应强制执行任何限制。

maxThreads

Connector将创建的请求处理线程的最大数量,因此,它确定了可以处理的同时请求的最大数量。如果未指定,则此属性设置为200。如果执行程序与此连接器相关联,则此属性将被忽略,因为连接器将使用执行程序而不是内部线程池执行任务。请注意,如果配置了执行程序,则将正确记录为此属性设置的任何值,但是会报告该值(例如,通过JMX), -1以明确未使用该值。

maxTrailerSize

限制在分块的HTTP请求的最后一块中的尾部标头的总长度。如果值为-1,则不施加任何限制。如果未指定,8192将使用默认值。

minSpareThreads

始终保持运行状态的最小线程数。这包括活动线程和空闲线程。如果未指定,10 则使用默认值。如果执行程序与此连接器相关联,则此属性将被忽略,因为连接器将使用执行程序而不是内部线程池来执行任务。请注意,如果配置了执行程序,则将正确记录为此属性设置的任何值,但是会报告该值(例如,通过JMX),-1以明确未使用该值。

noCompressionStrongETag

此标志配置是否考虑使用具有强ETag的资源进行压缩。如果为true,则不会压缩具有ETag的资源。默认值为true

不推荐使用此属性。它将在Tomcat 10以后的版本中将其硬编码为删除true

noCompressionUserAgents

该值是一个正则表达式(使用java.util.regex),与user-agent不应该对其进行压缩的HTTP客户端的标头匹配,因为这些客户端尽管确实宣传了对该功能的支持,但它们的实现却很糟糕。默认值为空字符串(禁用正则表达式匹配)。

processorCache

协议处理程序缓存Processor对象以提高性能。此设置指示要缓存多少这些对象。 -1表示无限,默认为200。如果不使用Servlet 3.0异步处理,那么一个很好的默认设置是使用与maxThreads设置相同的设置。如果使用Servlet 3.0异步处理,一个很好的默认设置是使用maxThreads中的较大者和期望的并发请求(同步和异步)的最大数量。

rejectIllegalHeader

如果收到的HTTP请求包含非法的标头名称或值(例如,标头名称不是令牌),则此设置确定是否将以400响应(true)拒绝请求,或者是否忽略非法标头(false)。默认值是 false将导致处理请求,但非法标头将被忽略。

rejectIllegalHeaderName

不推荐使用此属性。它将在Tomcat 10及更高版本中删除。现在,它是rejectIllegalHeader的别名。

relaxedPathChars

的HTTP / 1.1规范要求在URI路径使用时,某些字符%ン编码。不幸的是,包括所有主要浏览器在内的许多用户代理都不符合该规范,并以未编码形式使用这些字符。为了防止Tomcat拒绝此类请求,可以使用此属性来指定要允许的其他字符。如果未指定,则不允许使用其他字符。该值可以是以下字符的任意组合: " < > [ \ ] ^ ` { | }。值中存在的任何其他字符将被忽略。

relaxedQueryChars

的HTTP / 1.1规范要求某些字符%ン编码在URI查询字符串中使用时。不幸的是,包括所有主要浏览器在内的许多用户代理都不符合该规范,并以未编码形式使用这些字符。为了防止Tomcat拒绝此类请求,可以使用此属性来指定要允许的其他字符。如果未指定,则不允许使用其他字符。该值可以是以下字符的任意组合: " < > [ \ ] ^ ` { | }。值中存在的任何其他字符将被忽略。

restrictedUserAgents

该值是一个正则表达式(使用java.util.regex),与user-agent不应该使用HTTP / 1.1或HTTP / 1.0保持活动状态的HTTP客户端的标头匹配,即使客户端宣传了对这些功能的支持。默认值为空字符串(禁用正则表达式匹配)。

server

覆盖http响应的Server标头。如果设置,则此属性的值将覆盖Tomcat默认值和Web应用程序设置的任何服务器标头。如果未设置,则使用应用程序指定的任何值。如果应用程序未指定值,则Apache-Coyote/1.1使用该值 。除非您偏执,否则将不需要此功能。

socketBuffer

为套接字输出缓冲提供的缓冲区大小(以字节为单位)。可以指定-1以禁用缓冲区的使用。默认情况下,将使用9000字节的缓冲区。

SSLEnabled

使用此属性可以在连接器上启用SSL通信。要在连接器上打开SSL握手/加密/解密,请将此值设置为true。默认值为falsetrue启用此值时,您还需要设置 schemesecure属性,以将正确的request.getScheme()和 request.isSecure()值传递给servlet。有关更多信息,请参见SSL支持。

tcpNoDelay

如果设置为true,则将在服务器套接字上设置TCP_NO_DELAY选项,这可以在大多数情况下提高性能。true默认情况下设置为。

threadPriority

JVM中请求处理线程的优先级。默认值为5java.lang.Thread.NORM_PRIORITY常数的值 )。有关java.lang.Thread此优先级的含义的更多详细信息,请参见该类的JavaDoc 。如果执行程序与此连接器相关联,则此属性将被忽略,因为连接器将使用执行程序而不是内部线程池来执行任务。请注意,如果配置了执行程序,则将正确记录为此属性设置的任何值,但是会报告该值(例如,通过JMX), -1以明确未使用该值。

upgradeAsyncWriteBufferSize

不能为单个操作完成的异步写操作分配给缓冲区的默认大小,以字节为单位。无法立即写入的数据将存储在此缓冲区中,直到可以写入为止。如果需要存储的数据多于缓冲区中的可用空间,则在写入期间缓冲区的大小将增加。如果未指定,将使用默认值8192。

Java TCP套接字属性

除了上面列出的公共连接器和HTTP属性外,BIO和NIO实现还支持以下Java TCP套接字属性。

属性 描述
socket.rxBufSize

(int)套接字接收缓冲区(SO_RCVBUF)的大小,以字节为单位。如果未设置,则使用JVM默认值。

socket.txBufSize

(int)套接字发送缓冲区(SO_SNDBUF)的大小,以字节为单位。如果未设置,则使用JVM默认值。如果明确设置此值,则应小心。在某些值小于约8k的JVM上,观察到非常差的性能。

socket.tcpNoDelay

(布尔)这等效于标准属性 tcpNoDelay

socket.soKeepAlive

(布尔)套接字的保持活动设置的布尔值(SO_KEEPALIVE)。如果未设置,则使用JVM默认值。

socket.ooBInline

(布尔)套接字OOBINLINE设置的布尔值。如果未设置,则使用JVM默认值。

socket.soReuseAddress

套接字重用地址选项(SO_REUSEADDR)的(布尔)布尔值。如果未设置,则使用JVM默认值。

socket.soLingerOn

(bool)套接字so linger选项的布尔值(SO_LINGER)。标准属性connectionLinger的 值> = 0等于将其设置为true。标准属性connectionLinger的 值小于0等于将其设置为false。这两个属性都soLingerTime必须同时设置,否则将使用JVM默认值。

socket.soLingerTime

(int)套接字so linger选项(SO_LINGER)的秒数。这等效于标准属性 connectionLinger。这两个属性都soLingerOn必须同时设置,否则将使用JVM默认值。

socket.soTimeout

这等效于标准属性 connectionTimeout

socket.performanceConnectionTime

(int)性能设置的第一个值。请参阅 套接字性能选项。必须设置所有三个性能属性,否则将对所有三个属性使用JVM默认值。

socket.performanceLatency

(int)性能设置的第二个值。请参阅 套接字性能选项。必须设置所有三个性能属性,否则将对所有三个属性使用JVM默认值。

socket.performanceBandwidth

(int)性能设置的第三个值。请参阅 套接字性能选项。必须设置所有三个性能属性,否则将对所有三个属性使用JVM默认值。

socket.unlockTimeout

(int)套接字解锁的超时。当连接器停止时,它将尝试通过打开自身的连接器来释放接收器线程。默认值为250,该值以毫秒为单位

BIO特定配置

以下属性特定于BIO连接器。

属性 描述
disableKeepAlivePercentage

禁用HTTP保持活动之前必须使用的处理线程的百分比,以提高可伸缩性。小于的值 0将变为,0大于的值 100将变为100。如果未指定,则默认值为75

NIO特定配置

以下属性特定于NIO连接器。

属性 描述
pollerThreadCount

(int)用于轮询事件的线程数。默认值是1每个处理器7.0.27及以下版本。从7.0.28版本开始的默认值是1每个处理器,但不超过2。
接受套接字时,操作系统将持有全局锁。因此,超过2个线程的好处会迅速减少。具有多个线程的系统适用于需要非常快速地接受连接的系统。但是通常只需增加acceptCount就可以解决该问题。当大量发送文件操作正在进行时,增加该值也可能是有益的。

pollerThreadPriority

(int)轮询程序线程的优先级。默认值为5java.lang.Thread.NORM_PRIORITY常数的值 )。有关java.lang.Thread此优先级的含义的更多详细信息,请参见该类的JavaDoc 。

selectorTimeout

(int)轮询器的select()上的超时时间(以毫秒为单位)。此值很重要,因为连接清理是在同一线程上完成的,因此请勿将此值设置为极高的值。默认值为1000毫秒。

useComet

(布尔)是否允许彗星servlet。默认值为 true

useSendfile

(布尔)使用此属性来启用或禁用sendfile功能。默认值为true

socket.directBuffer

(布尔)布尔值,是使用直接ByteBuffer还是Java映射的ByteBuffer。如果true再 java.nio.ByteBuffer.allocateDirect()用于分配的缓冲区,如果false再 java.nio.ByteBuffer.allocate()被使用。默认值为false
使用直接缓冲区时,请确保为直接内存空间分配了适当的内存量。在Sun的JDK上,类似-XX:MaxDirectMemorySize=256m

socket.appReadBufSize

(int)在Tomcat中打开的每个连接都与读取的ByteBuffer关联。此属性控制此缓冲区的大小。默认情况下,此读取缓冲区的大小为8192字节。对于较低的并发性,可以增加此值以缓冲更多数据。对于极大量的保持活动连接,请减少此数目或增加堆大小。

socket.appWriteBufSize

(int)在Tomcat中打开的每个连接都与一个写入ByteBuffer相关联。此属性控制此缓冲区的大小。默认情况下,此写缓冲区的大小为8192字节。对于低并发性,您可以增加此值以缓冲更多响应数据。对于极大量的保持活动连接,请减少此数目或增加堆大小。
这里的默认值非常低,如果不处理成千上万的并发连接,则应将其调高。

socket.bufferPool

(int)NIO连接器使用称为NioChannel的类,该类保存链接到套接字的元素。为了减少垃圾收集,NIO连接器会缓存这些通道对象。此值指定此缓存的大小。默认值为500,表示缓存将容纳500个NioChannel对象。其他值 -1表示无限制的缓存和0无缓存。

socket.bufferPoolSize

(int)NioChannel池也可以基于大小,而不是基于对象。大小计算如下:
NioChannel buffer size = read buffer size + write buffer size
SecureNioChannelbuffer size = application read buffer size + application write buffer size + network read buffer size + network write buffer size
该值以字节为单位,默认值为1024*1024*100 (100MB)。

socket.processorCache

(int)Tomcat将缓存SocketProcessor对象以减少垃圾收集。整数值指定最多在缓存中保留多少个对象。默认值为500。其他值 -1表示无限制的缓存和0无缓存。

socket.keyCache

(int)Tomcat将缓存KeyAttachment对象以减少垃圾收集。整数值指定最多在缓存中保留多少个对象。默认值为500。其他值 -1表示无限制的缓存和0无缓存。

socket.eventCache

(int)Tomcat将缓存PollerEvent对象以减少垃圾收集。整数值指定最多在缓存中保留多少个对象。默认值为500。其他值 -1表示无限制的缓存和0无缓存。

selectorPool.maxSelectors

(int)池中要使用的max选择器,以减少选择器争用。当命令行org.apache.tomcat.util.net.NioSelectorShared值设置为false时,请使用此选项 。默认值为200

selectorPool.maxSpareSelectors

(int)池中使用的最大备用选择器,以减少选择器争用。When a selector is returned to the pool, the system can decide to keep it or let it be GC'd. 当命令行org.apache.tomcat.util.net.NioSelectorShared 值设置为false时,请使用此选项。默认值为-1(无限制)。

command-line-options

以下命令行选项可用于NIO连接器:
-Dorg.apache.tomcat.util.net.NioSelectorShared=true|false -默认为truefalse如果您希望为每个线程使用选择器,请将此值设置为。将其设置为时false,您可以通过使用selectorPool.maxSelectors属性来控制选择器池的大小 。

oomParachute

(int)NIO连接器实现了OutOfMemoryError策略,称为降落伞。它以字节数组的形式保存大量数据。如果是OOM,则释放该数据块并报告错误。这将为VM提供足够的清理空间。该oomParachute表示在降落伞(字节数组)的字节大小。默认值为 1024*1024(1MB)。请注意,这仅适用于与Java Heap空间有关的OOM错误,并且绝对不能保证您完全可以恢复。如果您在Java Heap之外有一个OOM,那么这个降落伞技巧将无济于事。

APR /本机特定配置

以下属性特定于APR /本机连接器。

属性 描述
deferAccept

设置TCP_DEFER_ACCEPT此连接器的侦听套接字上的标志。默认值是true其中 TCP_DEFER_ACCEPT由操作系统支持的,否则是false

pollerSize

负责轮询保持活动连接的轮询器可以在给定时间容纳的套接字数量。额外的连接将立即关闭。默认值为8192,与8192保持活动连接相对应。这是maxConnections的同义词。

pollTime

轮询呼叫的持续时间(以微秒为单位)。降低此值将在某些情况下稍微减少保持活动连接的等待时间,但是随着进行更多的轮询调用,将使用更多的CPU。默认值为2000(2毫秒)。

sendfileSize

轮询程序负责异步发送静态文件的套接字数量可以在给定的时间保持。多余的连接将立即关闭,而不会发送任何数据(导致客户端的文件长度为零)。请注意,在大多数情况下,sendfile是一个立即返回的调用(由内核“同步”处理),并且不会使用sendfile poller,因此可以并行发送的静态文件数量很多大于指定的数量。默认值为1024。

threadPriority

(int)接受方和轮询方线程的优先级。默认值为5java.lang.Thread.NORM_PRIORITY常数的值 )。有关java.lang.Thread此优先级的含义的更多详细信息,请参见该类的JavaDoc 。

useComet

(布尔)是否允许彗星servlet。默认值为 true

useSendfile

(布尔)使用此属性来启用或禁用sendfile功能。默认值为true。请注意,使用sendfile将禁用Tomcat可能会对响应执行的任何压缩。

嵌套组件

目前没有。

特殊功能
HTTP / 1.1和HTTP / 1.0支持

连接器支持HTTP / 1.1协议的所有必需功能,如RFC 7230-7235中所述,包括持久连接,流水线,期望和分块编码。如果客户端仅支持HTTP / 1.0或HTTP / 0.9,则 连接器也会适当地回退到支持该协议。启用此支持不需要特殊配置。该连接器还支持HTTP / 1.0的保活。

RFC 7230要求HTTP服务器始终以其声称支持的最高HTTP版本开始其响应。因此,此 连接器将始终HTTP/1.1在其响应的开始处返回。

代理支持

proxyNameproxyPort当Tomcat在代理服务器上运行的属性都可以使用。这些属性修改返回给调用request.getServerName()request.getServerPort() 方法的Web应用程序的值,这些值 通常用于构造用于重定向的绝对URL。如果不配置这些属性,则返回的值将反映接收到来自代理服务器的连接的服务器名称和端口,而不是客户端将原始请求定向到的服务器名称和端口。

有关更多信息,请参见 Proxy Support HOW-TO。

SSL支持

您可以通过将属性设置为来 对此连接器的特定实例启用SSL支持 。SSLEnabledtrue

您还需要分别将schemesecure 属性设置为值httpstrue ,以将正确的信息传递给Servlet。

BIO和NIO连接器使用JSSE SSL,而APR / native连接器使用OpenSSL。因此,除了使用不同的属性来配置SSL之外,APR /本机连接器还要求以不同的格式提供密钥和证书。

有关更多信息,请参见 SSL Configuration HOW-TO。

SSL支持-BIO和NIO

BIO和NIO连接器使用以下属性来配置SSL:

属性 描述
algorithm

要使用的证书编码算法。对于Sun JVM,这是默认KeyManagerFactory.getDefaultAlgorithm()返回 值 SunX509。IBM JVM返回 IbmX509。对于其他供应商,请查阅JVM文档以获取缺省值。

allowUnsafeLegacyRenegotiation

是否允许不安全的旧式TLS重新协商,这很可能使用户暴露于CVE-2009-3555,这是TLS协议中的中间人漏洞,攻击者可以利用该漏洞将任意数据注入用户的请求中。如果未指定,false则使用默认值。仅当JVM不支持RFC 5746(如存在伪密码套件TLS_EMPTY_RENEGOTIATION_INFO_SCSV)所指示时,此属性才有效。此版本从JRE / JDK 6更新22开始可用。在支持RFC 5746的情况下,重新协商(包括对不安全的旧式重新协商的支持)由JVM配置控制。

useServerCipherSuitesOrder

设置为true强制执行服务器的密码顺序(根据ciphers设置)。设置为false 选择客户端提供的第一个可接受的密码套件。 使用此功能需要Java 8或更高版本。 默认值是undefined,将选择权留给JSSE实现。

ciphers

以逗号分隔的加密密码列表,以支持HTTPS连接。如果指定,则仅使用SSL实施列出和支持的密码。默认情况下,将使用JVM的默认密码减去认为不安全的密码。请注意,对于较旧的JVM,默认情况下这将导致一组非常有限的密码。密码是使用JSSE密码命名约定指定的。的特殊值ALL将启用所有受支持的密码。这将包括许多不安全的东西。 ALL仅用于测试目的。

clientAuth

设置为true,如果你想在SSL栈需要从客户端的有效证书链接受连接之前。want如果希望SSL堆栈请求客户端证书,则设置为,但是如果未提供证书,则不会失败。一false ,除非客户端请求由安全限制使用保护的资源值(默认值)将不需要证书链CLIENT-CERT认证。

clientCertProvider

当客户端证书信息java.security.cert.X509Certificate以其实例以外的形式呈现时,需要先进行转换,然后才能使用它,并且此属性控制使用哪个JSSE提供程序执行转换。例如,它与AJP连接器,HTTP APR连接器以及 org.apache.catalina.valves.SSLValve一起使用。如果未指定,将使用默认提供程序。

crlFile

用于验证客户端证书的证书吊销列表。如果未定义,则不会根据证书吊销列表检查客户端证书。可以使用URL,绝对路径或相对(相对于CATALINA_BASE)路径指定文件。

keyAlias

密钥库中用于服务器密钥和证书的别名。如果未指定,将使用从密钥库读取的第一个密钥。从密钥库中读取密钥的顺序取决于实现。可能并非以与添加密钥相同的顺序从密钥库中读取密钥。如果密钥库中存在多个密钥,则强烈建议配置keyAlias以确保使用正确的密钥。

keyPass

用于从指定的密钥库文件访问服务器证书的密码。默认值为“ changeit”。

keystoreFile

存储要加载的服务器证书的密钥库文件的路径名。默认情况下,路径名.keystore是运行Tomcat的用户的操作系统主目录中的文件“ ”。如果 keystoreType不需要文件,请使用"" (空字符串)此参数。可以使用URL,绝对路径或相对(相对于CATALINA_BASE)路径指定文件。

keystorePass

用于访问指定密钥库文件的密码。默认值为keyPass属性的值。

keystoreProvider

用于服务器证书的密钥库提供程序的名称。如果未指定,则将按优先级顺序遍历已注册提供程序的列表,并keystoreType使用支持的第一个提供程序 。

keystoreType

服务器证书要使用的密钥库文件的类型。如果未指定,则默认值为“ JKS”。请参阅下面有关关键存储类型的注释。

sessionCacheSize

要在会话缓存中维护的SSL会话数。指定 -1使用实现默认值。零及以上的值将传递给实现。零用于指定无限的缓存大小,不建议使用。如果未指定,-1则使用默认值。

sessionTimeout

创建SSL会话后将超时的时间(以秒为单位)。指定-1使用实现默认值。零及以上的值将传递给实现。零用于指定无限超时,不建议使用。如果未指定,则使用默认值86400(24小时)。

sslEnabledProtocols

SSL协议的逗号分隔列表,以支持HTTPS连接。如果指定,则仅启用SSL实施列出并支持的协议。如果未指定,则使用JVM默认值(如果JVM默认启用其中一个或两个,则不包括SSLv2和SSLv3)。可以从JVM文档中获取允许值,SSLSocket.setEnabledProtocols()例如 Oracle Java 6和 Oracle Java 7的允许值 。注意:此属性和之间有重叠 sslProtocol

sslImplementationName

要使用的SSL实现的类名。如果未指定,那么org.apache.tomcat.util.net.jsse.JSSEImplementation 将使用默认值,该默认值将包装JVM的默认JSSE提供程序。请注意,可以将JVM配置为使用其他JSSE提供程序作为默认设置。

sslProtocol

要使用的SSL协议(一个值可以启用多个协议-有关详细信息,请参阅JVM文档)。如果未指定,则默认为TLS。当创建SSLContext实例(例如 Oracle Java 6和 Oracle Java 7)时,可以从JVM文档中获取算法允许值的允许值 。注意:此属性和之间有重叠 sslEnabledProtocols

trustManagerClassName

用于验证客户端证书的自定义信任管理器类的名称。该类必须具有零参数构造函数,并且还必须实现javax.net.ssl.X509TrustManager。如果设置了此属性,则可以忽略信任库属性。

trustMaxCertLength

验证客户端证书时允许的中间证书的最大数量。如果未指定,将使用默认值5。

truststoreAlgorithm

用于信任库的算法。如果未指定,javax.net.ssl.TrustManagerFactory.getDefaultAlgorithm()则使用的默认值 。

truststoreFile

用于验证客户端证书的信任库文件。默认值为javax.net.ssl.trustStore系统属性的值。如果既未设置此属性也未设置默认系统属性,则不会配置任何信任库。可以使用URL,绝对路径或相对(相对于CATALINA_BASE)路径指定文件。

truststorePass

访问信任库的密码。默认值为javax.net.ssl.trustStorePassword系统属性的值 。如果该属性为null,则不会配置任何信任库密码。如果指定了无效的信任库密码,将记录警告,并尝试在没有密码的情况下访问信任库,这将跳过对信任库内容的验证。

truststoreProvider

用于服务器证书的信任库提供程序的名称。默认值为javax.net.ssl.trustStoreProvider系统属性的值 。如果该属性为null,则将其值keystoreProvider用作默认值。如果既未设置此属性(默认系统属性),也未 keystoreProvider设置,则将按优先级顺序遍历已注册的提供程序列表,并truststoreType使用支持的第一个提供程序 。

truststoreType

用于信任库的密钥库的类型。默认值为javax.net.ssl.trustStoreType系统属性的值。如果该属性为null,则将其值keystoreType用作默认值。请参阅下面有关关键存储类型的注释。

SSL支持-APR /本机

启用APR /本机后,HTTPS连接器将使用套接字轮询器保持活动状态,从而提高服务器的可伸缩性。它还使用OpenSSL,根据所使用的处理器,OpenSSL可能比JSSE更优化,并且可以与许多商业加速器组件进行补充。与HTTP连接器不同,HTTPS连接器不能使用sendfile优化静态文件处理。

HTTPS APR /本机连接器具有与HTTP APR /本机连接器相同的属性,但是添加了OpenSSL特定的属性。有关使用OpenSSL的完整详细信息,请参考OpenSSL文档以及许多可用的书籍(请参阅OpenSSL官方网站)。APR /本机连接器的SSL特定属性是:

属性 描述
SSLCACertificateFile

请参阅 mod_ssl文档。

SSLCACertificatePath

请参阅 mod_ssl文档。

SSLCARevocationFile

请参阅 mod_ssl文档。

SSLCARevocationPath

请参阅 mod_ssl文档。

SSLCertificateChainFile

请参阅 mod_ssl文档。

SSLCACertificateFile

包含用于受信任的证书颁发机构的串联证书的文件的名称。格式是PEM编码的。

SSLCACertificatePath

包含受信任的证书颁发机构的证书的目录的名称。格式是PEM编码的。

SSLCARevocationFile

包含证书颁发机构的级联证书吊销列表的文件名。格式是PEM编码的。

SSLCARevocationPath

包含证书颁发机构的证书吊销列表的目录的名称。格式是PEM编码的。

SSLCertificateChainFile

包含证书颁发机构的串联证书的文件名,该证书颁发机构形成服务器证书的证书链。格式是PEM编码的。

SSLCertificateFile

包含服务器证书的文件名。格式是PEM编码的。

除了证书之外,该文件还可以包含DH参数和/或短暂密钥的EC曲线名称作为可选元素,分别由openssl dhparam和生成openssl ecparam。各个OpenSSL命令的输出可以简单地连接到证书文件。此功能需要APR /本地版本1.1.34或更高版本。

SSLCertificateKeyFile

包含服务器私钥的文件的名称。格式是PEM编码的。默认值是“ SSLCertificateFile”的值,在这种情况下,证书和私钥都必须在此文件中(不推荐)。

SSLCipherSuite

可以用于与客户端通信的密码。默认值为“ HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!kRSA”。有关密码配置选项的详细信息,请参见OpenSSL文档。

SSLDisableCompression

如果设置为true,则禁用压缩,并且OpenSSL支持禁用压缩。默认值是false继承OpenSSL中默认的压缩设置。

SSLHonorCipherOrder

设置为true强制执行服务器的密码顺序(从该SSLCipherSuite设置开始),而不是允许客户端选择密码(这是默认设置)。

SSLPassword

加密私钥的密码。如果未提供“ SSLPassword”,则回调函数应提示输入密码。

SSLProtocol

与客户端通信时要支持的协议的名称。这应该是以下各项的组合的列表:

  • SSLv2
  • SSLv3
  • TLSv1
  • TLSv1.1
  • TLSv1.2
  • TLSv1.3
  • 全部

列表中的每个标记都可以加一个加号(“ +”)或一个减号(“-”)前缀。加号添加协议,减号将其从当前列表中删除。该列表是从一个空列表开始构建的。

令牌all是的别名 TLSv1+TLSv1.1+TLSv1.2+TLSv1.3

如果为基于OpenSSL的安全连接器指定了多个协议,它将始终支持SSLv2Hello。如果指定了单个协议,它将不支持 SSLv2Hello

请注意,SSLv2SSLv3本质上是不安全的。

如果未指定,all将使用默认值。

SSLVerifyClient

向客户询问证书。默认值为“无”,这意味着客户端将没有机会提交证书。其他可接受的值包括“可选”,“要求”和“ optionalNoCA”。

SSLVerifyDepth

客户端证书的最大验证深度。默认值为“ 10”。

密钥库类型

除了标准密钥库类型(JKS和PKCS12)之外,大多数Java运行时还支持其他密钥库类型,例如Windows-ROOT,Windows-My,DKS以及硬件安全模块。通常,要将这些其他密钥库类型与Tomcat中的TLS连接器一起使用:

  • 将certificateKeystoreType和/或truststoreType连接器属性(根据需要)设置为必要的类型
  • 如果需要配置文件,请设置certificateKeystoreFile和/或truststoreFile连接器属性(根据需要)以指向该文件
  • 如果不需要配置文件,则几乎可以肯定需要将certificateKeystoreFile和/或truststoreFile连接器属性(视情况而定)设置为空字符串(“”)
  • 如果需要密码,请将certificateKeystorePassword和/或truststorePassword连接器属性(根据需要)设置为所需的密码
  • 如果不需要密码,则几乎可以肯定需要将certificateKeystorePassword和/或truststorePassword连接器属性(视情况而定)设置为空字符串(“”)

密钥库实现的变体,与Tomcat在后台进行的密钥库操作相结合,以允许JSSE和OpenSSL配置样式之间的互操作性,这意味着某些密钥库可能需要稍有不同的配置。始终可以从 Apache Tomcat用户邮件列表中获得帮助。我们的目标是在此处记录与上述建议不同的所有关键存储。目前,我们还没有人知道。

连接器比较

下面的小图显示了连接器的不同之处。

Java Blocking Connector   Java Non Blocking Connector   APR/native ConnectorBIO                         NIO                       APRClassname              Http11Protocol             Http11NioProtocol         Http11AprProtocolTomcat Version            since 3.x                  since 6.0.x               since 5.5.xSupport Polling              NO                          YES                       YESPolling Size                 N/A                   maxConnections             maxConnectionsRead Request Headers      Blocking                  Non Blocking                 BlockingRead Request Body         Blocking                    Blocking                   BlockingWrite Response            Blocking                    Blocking                   BlockingWait for next Request     Blocking                  Non Blocking               Non BlockingSSL Support               Java SSL                    Java SSL                   OpenSSLSSL Handshake             Blocking                  Non blocking                 BlockingMax Connections        maxConnections              maxConnections             maxConnections

Apache Tomcat 7 HTTP连接器相关推荐

  1. Apache Tomcat 8配置参考 HTTP连接器

    目录 介绍 属性 共同属性 标准实施 Java TCP套接字属性 NIO特定配置 NIO2特定配置 APR /本机特定配置 嵌套组件 特殊功能 HTTP / 1.1和HTTP / 1.0支持 HTTP ...

  2. Apache Tomcat 曝文件包含漏洞:攻击者可利用该漏洞读取webapp目录下的任意文件...

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | oschina 来源 | https://ww ...

  3. apache tomcat 整合

    1.编译安装apache 下载: 官网 http://httpd.apache.org/docs/2.4/install.htmlwget http://ftp.twaren.net/Unix/Web ...

  4. Apache+tomcat+mysql安装步骤

    Apache+tomcat+mysql安装步骤 Apache+tomcat+mysql安装步骤 预编译坏境安装 view source  print? 01 yum -y installmake 02 ...

  5. Apache Tomcat 5.5 Servlet/JSP 容器

    http://www.jaxmao.org/tomcat-docs/index.html Apache Tomcat 5.5 Servlet/JSP 容器 链接 文档首页 中文用户论坛 常见问题 用户 ...

  6. apache+tomcat的架构

    apache+tomcat的架构 =================================== keepalived实现apache的高可用 在tomcat上搭建JspRun论坛 apach ...

  7. tomcat(4)Tomcat的默认连接器

    [0]README 0.0)本文部分文字描述转自:"深入剖析tomcat",旨在学习 tomat(4)Tomat的默认连接器 的基础知识: 0.1)Tomcat中的连接器是一个独立 ...

  8. linux apache jk,Linux下Apache+Tomcat+JK实现负载均衡和群集的完整过程

    感谢chaijunkun的精彩大作,真的辛苦了. 最近在开发的项目需要承受很高的并发量.综合各种情况,决定使用Apache+Tomcat+JK的方式实现负载均衡,并且作为一个统一的服务还要实现群集(同 ...

  9. Apache Tomcat 9 用户指南

    Apache Tomcat 9  Apache Tomcat9 版本9.0.14, 2018年12月6日 这是Apache Tomcat Servlet / JSP容器的文档包的顶级入口点 .的Apa ...

最新文章

  1. js 关于运算顺序的问题
  2. 【转】在 Linux 平台下使用 JNI
  3. [Windows]ping itsafe环境变量
  4. deepin终端配置为英文
  5. 使用 std::shared_ptr 和 std::unique_ptr 测试 boost/pointer_cast.hpp
  6. 先定个小目标, 使用C# 开发的千万级应用
  7. lamp mysql大小限制_LAMP 调优之:MySQL 服务器调优
  8. System.Web.HttpContext.Current.Session为NULL解决方法
  9. 爱因斯坦和高中几何问题
  10. layabox2:打地鼠(地鼠显示/停留/受击/消失)
  11. CSS的Padding, Margin, Border 的区别
  12. css:电子数字显示
  13. python下载pps视频
  14. ARRIS路由器梅林系统救砖
  15. 两款很小和强大的mp3分割软件
  16. malloc函数及用法
  17. OpenCV_用形态学运算变换图像
  18. 使用代理服务器哪些风险?
  19. 明基 X3000i 怎么样
  20. linux xmanager 网络端口 177,通过xmanager连接linux系统

热门文章

  1. delphi 安装tee8.01图表插件
  2. ntlm java_Java Web服务NTLM身份验证
  3. 2023真无线蓝牙耳机哪个品牌好?蓝牙耳机怎么选?高性价比蓝牙耳机推荐指南!
  4. unity开发工具:文本颜色赋值
  5. 如何用计算机计算平均温差,第八章 传热平均温差计算.pdf
  6. 真实的智能是包含矛盾的
  7. 46家公司面试笔试题
  8. 路由器检测U盘,如果有则调用tcpdump,抓包文件到U盘
  9. 瞬间黄昏-八年级作文
  10. 处于半手工作坊时代的计算机软件行业