Трудно разобраться в документации 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. Этот модуль вступает в силу путем перенаправления трафика на коннектор ajp с помощью apache с главного сервера и наоборот.
На главном сервере 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-запрос на этот веб-сайт, возникает ошибка, например Безопасное соединение не удалось будет отображаться в браузере.