標籤:style blog http color io os 使用 ar strong
| 概述 |
Coyote HTTP/1.1 Connector元素是一個支援HTTP/1.1協議的Connector組件。它使Catalina除了能夠執行servlet和JSP頁面外,還能夠作為一個單獨的web server運行。Connector對象的執行個體在伺服器上監聽特定的TCP連接埠。一個Service可以配置一個或多個這樣的Connector,每個Connector都把請求轉寄給對應Engine進行處理,併產生響應。
在 伺服器啟動的時候,Connector會建立一些請求處理線程(基於minProcessors屬性值)。每個請求需要一個線程為其服務,直到服務完成。 如果同一時刻的請求數多於可用的請求處理線程,會建立額外的處理線程,線程數的上限是maxProcessors。如果已經到達了最大請求數,仍然有請求 發生,它們被緩衝在由Connector建立的server socket中,直到緩衝的上限(由acceptCount屬性的值定義)。這以後所有的請求都會收到“拒絕串連”的錯誤,直到有資源能夠處理它們。
|
| 屬性 |
| 公用屬性 |
所有Connector的實現支援如下屬性:
| 屬性 |
描述 |
enableLookups |
如果希望調用request.getRemoteHost()進行DNS查詢,以返回遠程客戶的實際主機名稱,將enableLookups設為true。如果希望忽略DNS查詢,僅僅返回IP地址,設為false(這樣提高了效能)。預設情況下,DNS查詢是使能的。 |
redirectPort |
如果Connector支援非SSL請求,在收到一個要求使用SSL傳輸的請求以後,Catalina會自動將該請求重新導向到這裡指定的連接埠號碼。 |
scheme |
調用request.getScheme()時返回的協議名稱。比如,在SSL Connector上可能將這個屬性設為“https”。預設值為“http”,更多資訊,參考SSL支援 |
secure |
如果希望在該Connector接收到的請求上調用request.isSecure()返回true,設定該屬性為true。預設值為false。 |
|
| 標準實現 |
Coyote HTTP/1.1 Connector的標準實現是org.apache.coyote.tomcat5.CoyoteConnector。它還支援如下的附加屬性
| 屬性 |
描述 |
acceptCount |
當所有可能的請求處理線程都被使用的時候,串連請求隊列的最大長度。如果該隊列為滿,所有的請求都被拒絕,預設值為10。 |
address |
對於具有多個IP地址的server,這個屬性指定了用於監聽特定連接埠的地址。預設情況下,連接埠作用於server的所有IP地址。 |
bufferSize |
connector建立的輸入資料流緩衝區的大小(以位元組為單位)。預設情況下,bufferSize=2048。 |
compression |
為 了節省伺服器頻寬,Connector可能使用HTTP/1.1GZIP壓縮。這個參數的可接受值為“off”(不使用壓縮),“on”(壓縮文本資料),“force”(在所有的情況下強制壓縮),或者使用一個數值 整數(等價於“on”,但是指定了輸出被壓縮是的最小的資料數)。如果content-length未知, 而compression設定成“on”或者 更強,輸出也會被壓縮。如果沒有指定,這個屬性被設成“off” |
connectionLinger |
當Connector使用的socket被關閉的時候,保留該socket的時間,以毫秒為單位。預設值為-1(不使用socket linger) |
connectionTimeout |
在Connector接受一個串連以後,等待發生第一個請求的時間,以毫秒為單位。預設值為60000(60秒) |
debug |
日誌訊息的詳細程度,數字越大,輸出越詳細,如果沒有指定,使用預設值0。 |
disableUploadTimeout |
這個標誌允許servlet container在一個servlet執行的時候,使用一個不同的,更長的連線逾時。最終的結果是給servlet更長的時間以便完成其執行,或者在資料上傳的時候更長的逾時時間。如果沒有指定,設為false。 |
maxKeepAliveRequests |
在server關閉串連之前,接受的HTTP請求的最大數目。如果該值設為1,會禁止HTTP/1.0保活,同時也會禁止HTTP/1.1保活和pipelining。如果沒有指定,設為100。 |
maxSpareThreads |
線上程池開始停止不必要的線程之前,允許存在的最大未使用的請求處理線程。預設值為50。
|
maxThreads |
Connector能夠建立的最大請求處理線程數,這個值決定了同時能夠處理的最大請求數。如果沒有指定,預設值為200。 |
minSpareThreads |
當Connector第一次啟動時,建立的請求處理線程數。connector同時必須保證指定數目的空閑處理線程。這個值應該設定成比maxThreads小的數值,預設值為4。 |
port |
Connector建立server socket並等待串連的TCP連接埠號碼。作業系統在特定的IP地址上只允許一個伺服器應用程式監聽特定的連接埠。 |
protocol |
為了使用HTTP處理器,該屬性值必須為HTTP/1.1(預設值) |
proxyName |
如果connector在代理配置中使用,將這個屬性設定成調用request.getServerName()時返回的伺服器名稱。更多資訊參考代理支援。 |
proxyPort |
如果Connector在代理配置中使用,這個屬性指定了調用request.getServerPort()返回的連接埠值。更多資訊參考代理支援。 |
socketBuffer |
socket輸出緩衝區的大小。如果為-1,不使用緩衝。預設值為9000位元組。 |
tcpNoDelay |
如果為true,伺服器socket會設定TCP_NO_DELAY選項,在大多數情況下可以提高效能。預設情況下設為true。 |
|
|
| 嵌套組件 |
可以嵌套在Connector中的唯一元素是Factory,用來設定管理員套介面工廠組件。這個組件從來都不需要,現在支援這個組件是為了與Tomcat的早期版本相容。
|
| 專有特徵 |
| HTTP/1.1 和HTTP/1.0 支援 |
Connector 支援HTTP/1.1協議的所有必需特徵(如RFC2616所描述的),包括永久性串連,流水線,expectations and chunked encoding。如果用戶端(通常是一個瀏覽器)只支援HTTP/1.0,Connector會自動跳回到HTTP/1.0。不需要特殊的配置來使能這 個支援。Connector也支援HTTP/1.0保活機制。
RFC2616要求HTTP伺服器的響應總是以它們宣稱支援的最高HTTP版本開始。因此,這個Connector在它的響應的開始總是返回HTTP/1.1。
|
| 日誌輸出 |
Connector產生的任何調試或者異常資訊都會被自動路由到與Connector所屬的Engine的Logger。不需要特殊的配置來使能這個支援。
|
| 代理支援 |
在Tomcat位於Proxy 伺服器後面時,可以使用proxyName和proxyPort屬性。這些屬性修改了調用 requset.getServerName()和request.getServerPort()的傳回值,用來構造重新導向的絕對URL。如果不設定這 些值,傳回值反映了Proxy 伺服器收到的已連線的服務器名稱和連接埠號碼,而不是用戶端發起的伺服器名稱和連接埠號碼。
更多資訊,參考代理支援HOW-TO
|
| SSL支援 |
對Connector的特定執行個體,可以將secure屬性設為true,來使能SSL支援。另外,可以配置如下屬性:
| 屬性 |
描述 |
algorithm |
使用的認證編碼演算法。預設值為SunX509。
|
clientAuth |
如果在接受某個串連之前,需要用戶端發送有效憑證鏈結,將該值設為true。如果為false(預設值),不需要使用憑證鏈結。除非用戶端請求被CLIENT-CERT認證保護的資源。
|
keystoreFile |
儲存伺服器憑證的keystore檔案路徑。預設情況下,路徑指向運行Tomcat的使用者主目錄下的".keystore"。
|
keystorePass |
用來訪問伺服器憑證的密碼,預設值未"changeit"
|
keystoreType |
用於儲存伺服器憑證的keystore檔案的類型。預設值未"JKS"
|
sslProtocol |
SSL協議的版本號碼,預設值是TLS
|
ciphers |
可以使用的密碼編譯演算法列表,用逗號分開。如果沒有指定,可以使用任何演算法。
|
|
|
Tomcat HTTP/1.1 Connector 參數整理