本文嘗試翻譯Tomcat官方文檔Apache Tomcat 7鏈接器,不足之處敬請指正。該文先介紹了Tomcat7 HTTP鏈接器的屬性,包括:公共屬性、標準實現、Java TCP套接字屬性、BIO的具體配置、NIO的具體配置、APR/Native的具體配置。接着介紹了Tomcat的特殊功能,包括:HTTP/1.1和HTTP/1.0的支持、代理支持、SSL支持以及鏈接器的比較。html
HTTP 鏈接器元素表明了支持HTTP/1.1協議的鏈接器組件,使Catalina成爲一個可以執行servlet和JSP頁面的獨立的Web服務器。一個HTTP 鏈接器組件的實例監聽服務器上一個特定的TCP端口號上的鏈接。一個或多個這樣的鏈接器能夠配置成一個單一Service的一部分,每一個轉發到相關聯的Engine 處理請求,並建立響應。java
若是你要配置的鏈接器,用於鏈接到Web服務器使用的的AJP協議(如 mod_jk的1.2.x的鏈接器適用於Apache 1.3),請參閱 AJPConnector文檔。web
每一個進入的請求須要一個線程處理。若是接收到比當前可用的請求處理線程能夠處理更多的併發請求,將建立額外的線程直到達到所配置的最大線程數(maxThreads值)。若是有超過處理能力的更多的請求到來,它們將被堆積在鏈接器建立的服務器套接字內,直到達到配置中acceptCount 的最大值。任何更多的同步請求將收到「鏈接被拒絕」的錯誤,直到有空閒線程來處理它們。正則表達式
全部的鏈接器實現 支持如下屬性:算法
屬性apache |
描述api |
allowTrace數組 |
一個布爾值,它能夠用來啓用或禁用跟蹤HTTP方法。若是沒有指定,該屬性設置爲false。瀏覽器 |
asyncTimeout緩存 |
默認超時時間以毫秒爲單位的異步請求。若是沒有指定,該屬性被設置爲10000(10秒)。 |
enableLookups |
若是你想 |
maxHeaderCount |
容器容許的請求頭字段的最大數目。請求中包含比指定的限制更多的頭字段將被拒絕。值小於0表示沒有限制。若是沒有指定,默認設置爲100。 |
maxParameterCount |
將被容器自動解析的最大數量的參數和值對(GET加上POST)。參數值對超出此限制將被忽略。值小於0表示沒有限制。若是沒有指定,默認爲10000。請注意, |
maxPostSize |
將被容器以FORM URL參數形式處理的最大長度(以字節爲單位)的POST。經過設置此屬性的值小於或等於0能夠禁用該限制。若是沒有指定,該屬性被設置爲2097152(2兆字節)。 |
maxSavePostSize |
將被容器在FORM或CLIENT-CERT認證中保存/緩衝的POST的最大尺寸(以字節爲單位)。對於這兩種類型的身份驗證,在用戶身份驗證以前,POST將被保存/緩衝。對於POST CLIENT-CERT認證,處理該請求的SSL握手和緩衝清空期間,POST將被緩存。對於Form認證,POST將被保存,同時用戶將被重定向到登錄表單。POST將被一直保留直到用戶成功認證或者認證請求關聯的會話超時。將此屬性設置爲-1能夠禁用此限制。將此屬性設置爲0,POST數據在身份驗證過程當中將不被保存。若是沒有指定,該屬性設置爲4096(4千字節)。 |
parseBodyMethods |
以逗號分隔的HTTP方法列表,經過方法列表,等同於POST方法,request 正文將被解析成請求參數。這在RESTful應用程序要支持以POST式的語義解析PUT請求中是很是有用的。須要注意的是設置其餘值(不是 |
port |
TCP端口號,鏈接器利用該端口號將建立一個服務器套接字,並等待傳入的鏈接。你的操做系統將只容許一個服務器應用程序在一個特定的IP地址偵聽特定的端口號。若是使用特殊值0(零),則Tomcat將爲鏈接器隨機選擇一個空閒的端口。這是一般只用在嵌入式和測試應用程序。 |
protocol |
設置協議來處理傳入流量。默認值是
也可使用的用戶自定義的實現。看一看在咱們的鏈接器比較圖。Java鏈接器,HTTP和HTTPS,配置是相同的。 APR鏈接器和APR特定的SSL設置的更多信息,請訪問APR文檔 |
proxyName |
若是這個鏈接正在使用的代理服務器配置,配置該屬性指定的服務器的名稱,能夠調用 |
proxyPort |
若是這個鏈接正在使用的代理服務器配置,配置該屬性指定服務器端口,能夠調用 |
redirectPort |
若是該鏈接器支持非SSL請求,而且接收到的請求爲知足 |
scheme |
將該屬性設置爲你想調用 |
secure |
若是你想調用 |
URIEncoding |
這將指定使用的字符編碼,來解碼URI字符。若是沒有指定,ISO-8859-1將被使用。 |
useBodyEncodingForURI |
這指定是否應該用於URI查詢參數,而不是使用URIEncoding contentType中指定的編碼。此設置兼容性Tomcat 4.1.x版(該版在contentType中指定編碼,或者使用request.setCharacterEncoding的方法顯式設置(參數爲URL傳來的值)。默認值false。 |
useIPVHosts |
將該屬性設置爲 |
xpoweredBy |
將此屬性設置爲 |
除了上面列出的常見的鏈接器屬性,標準的HTTP鏈接器(BIO,NIO和APR/native)都支持如下屬性。
屬性 |
描述 |
acceptCount |
當全部可能的請求處理線程都在使用時,傳入鏈接請求的最大隊列長度。當隊列滿時收到的任何請求將被拒絕。默認值是100。 |
acceptorThreadCount |
用於接受鏈接的線程的數量。在一個多CPU的機器上,增長該值,雖然你可能不會真正須要超過2個。此外,有不少非保持活動鏈接,您可能須要增長這個值。默認值是 1。 |
acceptorThreadPriority |
接收器線程的優先級。該線程用來接受新的鏈接。默認值是5(java.lang.Thread.NORM_PRIORITY常量)。更多這個優先級是什麼意思的詳細信息,請查看java.lang.Thread的類的JavaDoc 。 |
address |
對於擁有多個IP地址的服務器,該屬性指定哪一個地址將被用於在指定端口上監聽。默認狀況下,該端口將被用於與服務器相關聯的全部IP地址。 |
bindOnInit |
控制鏈接器綁定時套接字的使用。缺省狀況,當鏈接器被啓動時套接字被綁定和當鏈接器被銷燬時套接字解除綁定。若是設置爲false,鏈接器啓動時套接字被綁定,鏈接器中止時套接字解除綁定。 |
compressableMimeType |
該值是一個被用於HTTP壓縮的逗號分隔的MIME類型列表。默認值是text / html類型,爲text / xml,text / plain。 |
compression |
爲了節省服務器帶寬,鏈接器可使用HTTP/1.1 GZIP壓縮。可接受的參數的值是「off 」(禁用壓縮),「on 」(容許壓縮,這會致使文本數據被壓縮),「force 」(強制在全部的狀況下壓縮),或者一個整數值(這是至關於爲「on」,但指定了輸出以前被壓縮的數據最小量)。若是不知道內容長度但被設置爲「on」或更積極的壓縮,輸出的數據也將被壓縮。若是沒有指定,該屬性被設置爲「關」。 注意:這是使用壓縮(節省您的帶寬)和使用sendfile功能(節省你的CPU週期)之間的權衡。若是鏈接器支持sendfile功能,例如NIO鏈接,則使用sendfile將優先於壓縮。症狀是48 KB的靜態文件將未壓縮就發送。你能夠以下文所述經過設置鏈接器的useSendfile屬性來關閉sendfile,或在默認的conf/web.xml或者你的web應用的web.xml中配置DefaultServlet來改變sendfile的使用量閾值。 |
compressionMinSize |
若是壓縮被設置爲「on」,那麼該屬性能夠用於指定在輸出以前被壓縮的數據的最小量。若是未指定,此屬性默認爲「2048」。 |
connectionLinger |
鏈接器的套接字被關閉時的逗留秒數。若是沒有指定,將使用默認的JVM。 |
connectionTimeout |
在將提交的請求URI行呈現以後,鏈接器將等待接受鏈接的毫秒數。使用值-1表示沒有超時(即無限)。默認值是60000(60秒),但請注意,Tomcat的標準server.xml中,設置爲20000(即20秒)。 |
connectionUploadTimeout |
上傳數據過程當中,指定的以毫秒爲單位超時時間。只有在設置disableUploadTimeout爲false有效。 |
disableUploadTimeout |
此標誌容許servlet容器在數據上傳時使用不一樣的鏈接超時,一般較長。若是沒有指定,該屬性被設置爲true,禁用上傳超時。 |
executor |
指向Executor元素的引用。若是這個屬性被設置,而且被命名的executor存在,鏈接器將使用這個executor,而其餘全部線程相關屬性將被忽略。請注意共享的executor若是沒有指定到一個鏈接器,則該鏈接器將使用一個私有的,內部的executor來提供線程池。 |
KeepAliveTimeout |
此鏈接器在關閉鏈接以前將等待另外一個HTTP請求的毫秒數。默認值是使用已設置的connectionTimeout屬性的值。使用值-1表示沒有超時(即無限)。 |
maxConnections |
在任何給定的時間服務器接受並處理的最大鏈接數。當這個數字已經達到了,服務器將不會接受任何鏈接,直到鏈接的數量降到低於此值。基於acceptCount的設置,操做系統可能仍然接受鏈接。默認值根據不一樣的鏈接器類型而不一樣。對於BIO,默認的是maxThreads的值,除非使用了Executor,在這種狀況下默認值是executor的maxThreads值 。對於NIO的默認值是10000。APR /native的默認值是8192。 須要注意的是Windows系統的APR/native,所配置的值將減小到小於或等於maxConnections的1024的倍數的最大值。這樣作是出於性能方面的考慮。 若是設置的值-1,maxConnections功能被禁用,並且鏈接數將不作計算。 |
maxHttpHeaderSize |
請求和響應的HTTP頭的(以字節爲單位的)最大尺寸。若是沒有指定,該屬性被設置爲8192(8 KB)。 |
maxKeepAliveRequests |
HTTP請求最大長鏈接個數。將此屬性設置爲1,將禁用HTTP/1.0、以及HTTP/1.1的長鏈接。設置爲-1,不由用。若是沒有指定,該屬性被設置爲100。 |
maxThreads |
最多同時處理的鏈接數,Tomcat使用線程來處理接收的每一個請求。這個值表示Tomcat可建立的最大的線程數。若是沒有指定,該屬性被設置爲200。若是使用了execute將忽略此鏈接器的該屬性,鏈接器將使用execute,而不是一個內部線程池來處理請求。 |
maxTrailerSize |
限制一個分塊的HTTP請求中的最後一個塊的尾隨標頭的總長度。若是該值是-1,沒有限制的被強加。若是沒有指定,默認值是8192。 |
minSpareThreads |
始終保持運行最小線程數。若是沒有指定,則默認爲10。 |
noCompressionUserAgents |
該值是一個正則表達式(使用java.util.regex),匹配不該該使用壓縮的HTTP客戶端的用戶代理標頭。由於這些客戶端,雖然他們宣稱支持壓縮功能,但實現不完整。默認值是一個空字符串(正則表達式匹配禁用)。 |
processorCache |
協議處理器緩存Processor對象以提升性能。此設置規定了這些對象有多少能獲得緩存。-1意味着無限制,默認爲200。若是不使用Servlet 3.0的異步處理,一個好的默認是使用maxThreads設置。若是使用Servlet 3.0的異步處理,一個好的默認是使用maxThreads和最大預期的併發請求(同步和異步)的最大值中的較大值。 |
restrictedUserAgents |
該值是一個正則表達式(使用java.util.regex),匹配用戶代理頭的HTTP瀏覽器將不能使用HTTP/1.1或HTTP/1.0長鏈接,即便該瀏覽器宣稱支持這些功能的。默認值是一個空字符串(正則表達式匹配禁用)。 |
server |
覆蓋服務器的HTTP響應頭。若是設置了這個屬性的值將覆蓋Web應用程序設置的Tomcat的默認頭和任何服務器頭。若是沒有設置,應用程序指定的任何值將被使用。若是應用程序沒有指定一個值,那麼Apache-Coyote/1.1將被使用。除非你是偏執狂,你將再也不須要此功能。 |
socketBuffer |
爲套接字輸出緩衝而提供的緩衝區的大小(以字節爲單位)。-1能夠被指定來禁止使用的緩衝區。默認狀況下,一個9000個字節的緩衝區將被使用。 |
SSLEnabled |
在鏈接器上使用此屬性來啓用SSL加密傳輸。若是要打開SSL握手/加密/解密,請設置true。默認值是false。當設置這個值爲true時,爲了傳遞正確的request.getScheme()和 request.isSecure()到servlets,你須要設置scheme和secure屬性。更多信息請查看SSL支持。 |
tcpNoDelay |
若是設置爲true,TCP_NO_DELAY選項將被設置在服務器上的套接字上,在大多數狀況下,這樣能夠提升性能。默認設置爲true。 |
threadPriority |
在JVM中請求處理線程的優先級。默認值是5(java.lang.Thread.NORM_PRIORITY常量值)。關於優先級的更多詳細信息,請查看java.lang.Thread的類的JavaDoc 。 |
除了上文列出的通用的鏈接器和HTTP屬性,BIO和NIO實現還支持下面的JavaTCP套接字屬性。
屬性 |
描述 |
socket.rxBufSize |
(int)套接字接收緩衝區(SO_RCVBUF)大小(以字節爲單位)。若是沒有設置,JVM默認值將被使用。 |
socket.txBufSize |
(int)套接字發送緩衝區(SO_SNDBUF)大小(以字節爲單位)。若是沒有設置,JVM默認值將被使用。 |
socket.tcpNoDelay |
(bool)至關於到標準屬性 tcpNoDelay。 |
socket.soKeepAlive |
(bool)套接字的長鏈接(SO_KEEPALIVE)設置。若是沒有設置,JVM默認值將被使用。 |
socket.ooBInline |
(bool)套接字的OOBINLINE設置。若是沒有設置,JVM默認值將被使用。 |
socket.soReuseAddress |
(bool)套接字複用地址選項(SO_REUSEADDR)。若是沒有設置,JVM默認值將被使用。 |
socket.soLingerOn |
(bool)套接字的延遲關閉選項(SO_LINGER)。標準屬性connectionLinger值> = 0 的時候,至關於將此項設置爲true。標準屬性connectionLinger值<0 的時候,至關於將此項設置爲false。此屬性和soLingerTime都必須被設置,不然JVM的預設值將被使用。 |
socket.soLingerTime |
(int)套接字延時關閉選項(SO_LINGER)秒數。這至關於標準屬性connectionLinger。此屬性和soLingerOn都必須被設置,不然JVM的預設值將被使用。 |
socket.soTimeout |
至關於標準屬性 的connectionTimeout。 |
socket.performanceConnectionTime |
(int)性能設置的第一個值。 全部這三個性能屬性必須設置不然全部三個屬性的JVM預設值將被使用,可查看套接字性能選項。 |
socket.performanceLatency |
(int)性能設置的第二個值。 全部這三個性能屬性必須設置不然全部三個屬性的JVM預設值將被使用,可查看套接字性能選項。 |
socket.performanceBandwidth |
(int)性能設置的第三個值。 全部這三個性能屬性必須設置不然全部三個屬性的JVM預設值將被使用,可查看套接字性能選項。 |
socket.unlockTimeout |
(int)套接字解鎖的超時時間。當一個鏈接器中止時,它會經過打開一個鏈接到自己的鏈接器來嘗試釋放acceptor 線程。默認值是250(以毫秒爲單位) |
下面是BIO鏈接器的特定屬性。
屬性 |
描述 |
disableKeepAlivePercentage |
爲提升可擴展性,在長鏈接失效以前被使用的處理線程的百分比。小於0的值將被設爲0,大於100的值將被設爲100。若是沒有指定,默認值是75。 |
下面是NIO鏈接器的特定屬性。
屬性 |
描述 |
pollerThreadCount |
(int)用來處理輪詢事件的線程的數量。在版本7.0.27及之前版本,默認值是每一個處理器1個。版本7.0.28的默認值是每一個處理器1個,但不超過2個。 當接受一個套接字,操做系統擁有全局的鎖。因此超過2個線程的好處而迅速減少。有一個以上的線程是由於系統須要很是迅速地接受鏈接。但一般只要增長acceptCount值就能夠解決這個問題。增長該值也多是有用的,當大量發送文件操做發生的時候。 |
pollerThreadPriority |
(int)輪詢線程的優先級。默認值是5(java.lang.Thread.NORM_PRIORITY常量值)。優先級的更多詳細信息,能夠查考java.lang.Thread類的JavaDoc 。 |
selectorTimeout |
(int)選擇輪詢器select()的超時時間(以毫秒爲單位)。這個值很是重要,由於鏈接清理工做也是在同一個線程裏的,因此不要將此值設置爲一個很是高的。默認值是1000毫秒。 |
useComet |
(bool)是否容許Comet servlet。默認值是 true。 |
useSendfile |
(bool)使用此屬性來啓用或禁用sendfile的能力。默認值是true。 |
socket.directBuffer |
(bool)選擇使用直接ByteBuffers或Java映射的ByteBuffers。默認是false。 |
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池,也能夠是基於尺寸大小,而不是基於對象數的。該大小的計算以下: 值(以字節爲單位),默認值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)以減小選擇器的爭用,在池中使用的選擇器最大個數。命令行org.apache.tomcat.util.net.NioSelectorShared值設置爲false時,使用此選項。默認值是200。 |
selectorPool.maxSpareSelectors |
(int)以減小選擇器的爭用,在池中使用的最大備用選擇器個數。當選擇器返回到池中時,系統能夠決定保留它或者讓他垃圾回收。當org.apache.tomcat.util.net.NioSelectorShared 值設置爲false時,使用此選項。默認值是-1(無限制)。 |
命令行選項 |
下面的命令行選項可用於NIO鏈接器:-Dorg.apache.tomcat.util.net.NioSelectorShared=true|false 默認狀況下是true。若是你想每一個線程使用一個選擇器,將此值設置爲false。當你將它設置爲false,你能夠經過使用selectorPool.maxSelectors屬性控制選擇器池的大小。 |
oomParachute |
(int)NIO鏈接器實現了一個名叫parachute的OutOfMemoryError錯誤的策略。它擁有一個塊的數據做爲一個字節數組。在一個OOM的狀況下,這個數據塊被釋放,並報告錯誤。這會給VM足夠的空間來清理。oomParachute表明parachute(字節數組)的大小(以字節爲單位)。默認值是 1024 * 1024(1MB)。請注意,這僅適用於關於Java堆空間的OOM錯誤,也不是絕對保證,你將可以恢復全部。若是你有一個Java堆以外OOM的,那麼這個parachute也無濟於事。 |
下面是APR/Native 鏈接器的特定屬性。
屬性 |
描述 |
deferAccept |
在鏈接器的監聽套接字上設置TCP_DEFER_ACCEPT標誌。當操做系統支持TCP_DEFER_ACCEPT時默認值是true,不然它是false。 |
pollerSize |
在一個給定的時間內,負責長鏈接輪詢的輪詢器可以持有的線程數。額外的鏈接將被立刻關閉。默認值是8192,與8192個長鏈接數一致。是maxConnections的一個代名詞。 |
pollerThreadCount |
用於輪詢長鏈接的線程數。Windows系統默認選擇,每一個線程管理的套接字數小於1024。對於Linux的默認值是1。更改Windows下的默認值可能有負面的性能影響。 |
pollTime |
輪詢調用持續的時間(以微秒爲單位)。在某些狀況下,下降該值將略微減小潛在的鏈接數,但隨着增長的輪詢調用會使用更多的CPU。默認值是2000(毫秒)。 |
sendfileSize |
在給定時間內,負責異步發送靜態文件的輪詢器能夠持有的套接字數。額外的鏈接將被立刻關閉,沒有任何數據被髮送(在客戶端產生一個長度爲零的文件)。請注意,在大多數狀況下,的sendfile是一個馬上返回的調用(被內核照顧的「同步」),並且sendfile輪詢器將不會被使用,因此能夠同時發送的靜態文件的數量大於指定的值。默認值是1024。 |
sendfileThreadCount |
服務於sendfile套接字的線程數。因爲Windows系統默認選擇,每一個線程管理的套接字小於1024。Linux系統的默認值是1。更改Windows系統下的默認值可能有負面的性能影響。 |
threadPriority |
(int)接收器和輪詢器線程的優先級。默認值是5(java.lang.Thread.NORM_PRIORITY常量值)。優先級的詳細信息請查看java.lang.Thread類的JavaDoc 。 |
useComet |
(bool)容許或禁止Comet servlet。默認值是 true。 |
useSendfile |
(bool)使用此屬性來啓用或禁用sendfile的能力。默認值是true。 |
這個時候沒有。
該鏈接器支持在RFC 2616中描述的HTTP/1.1協議的全部必需功能,包括持久鏈接,管道,預期和分塊編碼所需的功能。若是客戶端(一般是瀏覽器)只支持HTTP/1.0, 鏈接器將優雅地向下兼容以支持該協議。啓用這種支持,沒有特殊的配置要求。該鏈接器還支持HTTP/1.0長鏈接。
RFC 2616規定,HTTP服務器老是在它們響應的開頭加上它們宣稱支持的最高的HTTP版本。所以,此 鏈接器將老是在其響應開頭返回HTTP/1.1。
當Tomcat部署在代理服務器的後面的時候,proxyName和proxyPort屬性能夠被使用。這些屬性修改web服務器調用的request.getServerName()和request.getServerPort() 方法的值,這是常常被用來構造重定向de 絕對路徑的URL。若是不配置這些屬性,返回的值將反映代理服務器接收鏈接的服務器名稱和端口,而不是客戶端定向原始請求的服務器名稱和端口。
有關詳細信息,請參閱 如何使用代理服務器支持。
經過設置啓用SSL屬性爲true,您能夠啓用SSL支持此鏈接器的特定實例 。
你還須要設置scheme 和secure 屬性的值分別爲https和true,傳遞正確的信息到servlet。
BIO與NIO鏈接器使用JSSE的SSL,而APR / native鏈接器使用OpenSSL。所以,除了使用不一樣的屬性來配置SSL的APR / native鏈接器外,還須要以不一樣的格式提供密鑰和證書。
有關詳細信息,請參閱文檔SSL怎麼配置。
BIO與NIO鏈接器使用下面的屬性來配置SSL:
屬性 |
描述 |
algorithm |
使用的證書編碼算法。默認 |
allowUnsafeLegacyRenegotiation |
容許不安全的傳統的TLS從新協商,它有可能容許暴露用戶給CVE-2009-3555(處理會話重協商過程當中TLS實現存在錯誤,容許經過中間人攻擊,注入任意明文到已存在的TLS會話中。)的狀況發生。若是沒有指定,默認設置爲 |
ciphers |
逗號分隔的這個套接字被容許使用的加密算法列表。默認狀況下,在JVM的默認密碼將被使用。請注意,這一般意味着,弱輸出等級的密碼將被包含在列表的可用密碼中。密碼被指定使用JSSE密碼的命名約定。特殊值ALL ,將啓用全部支持的密碼。這將包括許多不安全。ALL僅用於測試目的。 |
clientAuth |
若是在接受鏈接以前,你想讓從客戶端來的SSL協議棧須要一個有效的證書鏈則設置爲 |
clientCertProvider |
當客戶端證書信息的以表單形式而不是 |
crlFile |
用來驗證客戶端證書的證書吊銷列表。若是沒有定義,將不覈對證書吊銷列表來檢查客戶端證書。 |
keyAlias |
用於作key庫中的服務器證書的別名。若是沒有指定將使用在key庫中讀取的第一個key。 |
keypass |
該密碼用於訪問指定的keystore文件的服務器證書。默認值是「 |
keystoreFile |
要加載的服務器證書存放的keystore文件的路徑名。默認狀況下,該文件的路徑名是「 |
keystorePass |
該密碼用於訪問指定的keystore文件。默認值是 |
keystoreProvider |
被用於服務器證書的keystore 提供者的名稱。若是未指定,將選擇按優先順序註冊過的提供者列表的第一個支持keystoreType的提供者。 |
keystoreType |
用於服務器證書的keystore文件的類型。若是沒有指定,默認值是「 |
sessionCacheSize |
保持在session緩存中的SSL會話的數量。使用0到指定一個無大小限制的緩存。若是沒有指定,默認值爲0。 |
sessionTimeout |
在建立一個SSL會話後它將超時的時間(以秒爲單位)。使用0指定無限制超時。若是沒有指定,默認爲86400(24小時)。 |
sslEnabledProtocols |
使用的SSL協議的列表。若是未指定,則使用JVM的默認設置。 |
sslImplementationName |
使用的SSL實現的類名。若是未指定, 將使用默認的 |
sslProtocol |
使用的SSL協議版本。若是沒有指定,默認是「 |
trustManagerClassName |
一個用來驗證客戶端證書的自定義信任管理類的名稱。這個類必須有一個無參數的構造並且必須實現 |
trustMaxCertLength |
驗證客戶端證書時,容許的中間證書的最大數量。若是沒有指定,默認值5將被使用。 |
truststoreAlgorithm |
該算法用於truststore。若是沒有指定,將使用由 |
truststoreFile |
用來驗證客戶端證書的trust store文件。默認值是 |
truststorePass |
訪問trust store的密碼。默認值是 |
truststoreProvider |
用於服務器證書的truststore提供者的名稱。默認值是 |
truststoreType |
用於trust store的key store的類型。默認值是 |
APR / Native啓用時,HTTPS鏈接器將使用一個套接字來輪詢長鏈接,以提升服務器的可擴展性。它還使用OpenSSL,這可能比JSSE更優化(取決於所使用的處理器),而且能夠補充許多商業加速器組件。不一樣於HTTP鏈接器,HTTPS鏈接器不能使用的sendfile優化靜態文件的處理。
HTTPS APR / Native鏈接器具備HTTP APR / Native鏈接器相同的屬性,而且增長了OpenSSL的特殊屬性。使用OpenSSL的全部詳細資料,請參閱OpenSSL資料和許多可用的書籍(請參閱官方OpenSSL的網站)。SSL特有的APR /Native鏈接器的屬性:
屬性 |
描述 |
SSLCACertificateFile |
查看mod_ssl的文檔。 |
SSLCACertificatePath |
查看mod_ssl的文檔。 |
SSLCARevocationFile |
查看mod_ssl的文檔。 |
SSLCARevocationPath |
查看mod_ssl的文檔。 |
SSLCertificateChainFile |
查看mod_ssl的文檔。 |
SSLCACertificateFile |
包含受信任的證書頒發機構的拼接的證書文件的名稱。是PEM編碼的格式。 |
SSLCACertificatePath |
包含的受信任的證書頒發機構的證書目錄名稱。是PEM編碼的格式。 |
SSLCARevocationFile |
包含證書頒發機構的拼接的證書吊銷列表文件的名稱。是PEM編碼的格式。 |
SSLCARevocationPath |
包含的證書頒發機構的拼接的證書撤銷列表的目錄的名稱。是PEM編碼的格式。 |
SSLCertificateChainFile |
包含鏈接的certifcates造成的資格證書鏈的服務器證書的證書頒發機構的的文件的名稱。是PEM編碼的格式。 |
SSLCertificateFile |
包含服務器證書的文件的名稱。是PEM編碼的格式。 |
SSLCertificateKeyFile |
包含服務器私鑰的文件名稱。是PEM編碼的格式。默認值是SSLCertificateFile的值,在這種狀況下,證書和私鑰都必須在這個文件中(不推薦)。 |
SSLCipherSuite |
可用於與客戶端進行通訊的密碼。默認值是「ALL」,其餘可接受的值是以「:」分隔的一組密碼,(請參閱OpenSSL的文檔列表中支持的密碼)。 |
SSLHonorCipherOrder |
設置爲true(這是默認值)將強制服務器的密碼規則(按照 |
SSLPassword |
用於私有密鑰加密的口令短語。若是沒有提供「SSLPassword」時,回調函數將提示輸入口令短語。 |
SSLProtocol |
可被用來與客戶端通訊的協議。默認值是all,這是等同 |
SSLVerifyClient |
向客戶端要求證書。默認值是「none」,這意味着客戶端將不會有機會提交證書。其餘可接受的值包括「optional」,「require」和「optionalNoCA」。 |
SSLVerifyDepth |
客戶端證書的最大驗證深度。默認值是「10」。 |
下面是一個小的圖表,顯示了鏈接器如何區分。
Java Blocking Connector BIO |
Java Non Blocking Connector NIO |
APR/native Connector APR |
|
Classname |
Http11Protocol |
Http11NioProtocol |
Http11AprProtocol |
Tomcat Version |
3.x onwards |
6.x onwards |
5.5.x onwards |
Support Pollin |
NO |
YES |
YES |
Polling Size |
N/A |
maxConnections |
maxConnections |
Read HTTP Request |
Blocking |
Non Blocking |
Blocking |
Read HTTP Body |
Blocking |
Sim Blocking |
Blocking |
Write HTTP Response |
Blocking |
Sim Blocking |
Blocking |
Wait for next Request |
Blocking |
Non Blocking |
Non Blocking |
SSL Support |
Java SSL |
Java SSL |
OpenSSL |
SSL Handshake |
Blocking |
Non blocking |
Blocking |
Max Connections |
maxConnections |
maxConnections |
maxConnections |