Я новичок в Apache и Tomcat, и я обнаружил, что работаю с ними большую часть своей работы, поэтому мне нужно учиться на ходу. Одна вещь, с которой я много борюсь, - это mod_jk, и я довольно озадачен проблемой, с которой я столкнулся прямо сейчас.
Я пытаюсь использовать apache для пересылки всего трафика, поступающего на порт 443, на порт 8443, где установлено приложение, но по какой-то причине оно не выполняет своих функций. Вот что у меня сейчас в файле vhosts:
<VirtualHost *:443>
DocumentRoot /opt/tomcat/tomcat6/webapps/StoreFront
ServerName testbuilder2.domain.com
ServerAdmin networksupport@domain.com
ErrorLog /etc/httpd/logs/builder.error_log
TransferLog /etc/httpd/logs/builder.transfer_log
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
SSLHonorCipherOrder on
SSLCertificateFile /etc/httpd/conf/certs/*.domain.com.crt
SSLCertificateKeyFile /etc/httpd/conf/certs/wildcardprivate.key
SSLCertificateChainFile /etc/httpd/conf/certs/IntermediateCABundle.crt
JkMount /* testbuilder2
Мои worker.properties выглядят так:
worker.list=testbuilder2,jk-status
########## Template Worker ###########
worker.template1.type=ajp13
worker.template1.socket_keepalive=true
worker.template1.ping_mode=A
worker.template1.ping_timeout=10000
worker.template1.connection_pool_minsize=0
worker.template1.connection_pool_timeout=600
worker.template1.reply_timeout=300000
worker.template1.recovery_options=3
######### Workers ###################
# testbuilder2
worker.testbuilder2.reference=worker.template1
worker.testbuilder2.port=8009
worker.testbuilder2.host=localhost
worker.testbuilder2.activation=A
mod_jk.conf:
LoadModule jk_module modules/mod_jk.so
JkWorkersFile conf/workers.properties
# Ensure the following directory exists if not changed.
JkShmFile /var/cache/httpd/mod_jk.shm
JkLogFile logs/mod_jk.log
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
JkLogLevel info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
Мне все это кажется правильным, но опять же, я довольно тупой. :п
Здесь что-то явно не так? Всякий раз, когда я иду в https://testbuilder2.domain.com, он просто переводит меня прямо на экран приветствия apache. Странно то, что я попытался настроить это на 80-м порту, и он работает правильно:
<VirtualHost *:80>
DocumentRoot /opt/tomcat/tomcat6/webapps/StoreFront
ServerName testbuilder2.domain.com
ServerAdmin networksupport@domain.com
ErrorLog /etc/httpd/logs/builder.error_log
TransferLog /etc/httpd/logs/builder.transfer_log
JkMount /* testbuilder2
Использование этого приводит к нормальной загрузке нашего приложения с любого URL-адреса. Так что я знаю, что у меня есть все необходимое, чтобы это работало, я просто делаю что-то действительно не так. Любые идеи?
Я использую CentOS Linux версии 7.1.1503 (Core), минимальная установка, Apache 2.4, Tomcat 6. Думаю, Mod_jk версии 1.2.40.
Если вы используете SSL на стороне Apache HTTPD, вы, вероятно, захотите перенаправить на 8080 на Tomcat.
В server.xml для Tomcat в наборе Connector
scheme="https" secure="true" proxyPort="443"
Это говорит tomcat прослушивать порт 8080 для HTTP (не HTTPS), но что соединение является «безопасным» и использует HTTPS и сообщает клиентам использовать порт 443, если есть ссылки и т. Д.
Изменить: похоже, вы можете перенаправить на 8009, если вы используете APR и вам нужно отредактировать коннектор APR в Tomcat server.xml вместо стандартного HTTP-коннектора на порту 8080, но остальное все еще применимо.
Видеть документация tomcat для получения дополнительной информации