Linux

Tomcat 中的重定向埠是什麼?

  • February 22, 2016

很難理解 tomcat 文件,查看 server.xml 您會發現大量埠可能難以理解,因為文件中沒有真正正確或廣泛地解釋它。

例如,配置文件中的這一行server.xml

<Connector port="8345" protocol="AJP/1.3" redirectPort="9875" />

在這裡您可以找到另一個重定向埠:

<Connector executor="tomcatThreadPool"
              port="8080" protocol="HTTP/1.1"
              connectionTimeout="20000"
              redirectPort="8443" /> 

我了解連接器埠的作用。在第一種情況下,您使用它在 apache 中創建一個工作人員並將其發送到那裡,在第二種情況下,您打開一個埠以直接訪問 tomcat。然而,當涉及到重定向埠時,事情就變得模糊了。

這是tomcat文件對ajp埠的解釋:

如果此連接器支持非 SSL 請求,並且接收到匹配需要 SSL 傳輸的請求,Catalina 將自動將請求重定向到此處指定的埠號。

我總是選擇一個超過 1024 的隨機重定向埠,它可以工作,

但這什麼時候會付諸實踐呢?它如何知道請求何時需要 SSL 傳輸?

我有一個執行 tomcat 模組的衛星伺服器。該模組通過使用 apache 從主伺服器將流量重定向到 ajp 連接器來生效,反之亦然。

在主伺服器中,https 在 apache 中強制執行。這是否意味著所有請求都以加密或純文字形式發送到衛星伺服器?我知道如果我通過埠 8080 訪問衛星伺服器,它沒有加密,但我想知道這是否也適用於被重定向到主伺服器的流量,以及這個重定向埠在哪裡生效。

正如文件中定義的那樣,重定向埠將在 SSL 請求到達伺服器時出現,並且由於 http 連接器埠無法處理 SSL 請求,它將重定向到定義的埠。但它們必須是 server.xml 文件中定義的另一個部分,其中定義的重定向埠將充當連接器埠來處理 SSL 請求。例如,如果您希望 http 請求由埠 80 處理,https 請求由埠 443 處理,則 server.xml 將如下所示:

<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="443" />

<Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true" scheme="https" secure="true" sslProtocol="TLS" keystoreFile="/path/to/kestorefile" keystorePass="my_keystore_password"/>

Keystorefile 是您網站的 ssl 證書。

如果您沒有將其他部分配置為重定向埠作為連接器埠,您的請求將不會被重定向到該埠。例如,如果網站不支持 ssl 請求,而您嘗試向該網站發送 https 請求,則會在瀏覽器上顯示諸如安全連接失敗之類的錯誤。

引用自:https://serverfault.com/questions/758817