Tomcat 中的重定向端口是什么?

Ulu*_*kai 18 linux tomcat tomcat7

很难理解 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" /> 
Run Code Online (Sandbox Code Playgroud)

我了解连接器端口的作用。在第一种情况下,您使用它在 apache 中创建一个工作程序并将其发送到那里,在第二种情况下,您打开一个端口以直接访问 tomcat。然而,当涉及到重定向端口时,事情就变得模糊了。

下面是 tomcat 文档对 ajp 端口的解释:

如果此连接器支持非 SSL 请求,并且收到匹配需要 SSL 传输的请求,Catalina 将自动将请求重定向到此处指定的端口号。

我总是选择一个超过 1024 的随机重定向端口,它可以工作,

但这什么时候会付诸实践呢?它如何知道请求何时需要 SSL 传输?

我有一个运行 tomcat 模块的卫星服务器。该模块通过将流量从主服务器重定向到带有 apache 的 ajp 连接器而生效,反之亦然。

在主服务器中,https 是在 apache 中强制执行的。这是否意味着所有请求都以加密或纯文本形式发送到卫星服务器?我知道如果我通过端口 8080 访问卫星服务器,它没有被加密,但我想知道这是否也适用于被重定向到主服务器的流量,以及这个重定向端口在哪里生效。

小智 9

正如文档中定义的那样,重定向端口将在 SSL 请求到达服务器时出现,并且由于 http 连接器端口无法处理 SSL 请求,它将重定向到定义的端口。但它们必须是 server.xml 文件中定义的另一个部分,其中定义的重定向端口将充当连接器端口来处理 SSL 请求。例如,如果您希望通过端口 80 处理 http 请求,通过端口 443 处理 https 请求,则 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"/>
Run Code Online (Sandbox Code Playgroud)

Keystorefile 是您网站的 ssl 证书。

如果您没有将重定向端口的其他部分配置为连接器端口,您的请求将不会被重定向到该端口。例如,如果该网站不支持 ssl 请求,而您尝试向该网站发送 https 请求,则浏览器上将显示安全连接失败等错误。