У меня простая настройка сервера:
- Апач 2.4.6
- JK Worker для общения с Tomcat, где живет служба REST
- Томкэт 10
Виртуальный хост
В моем файле виртуального хоста у меня есть эта конфигурация (фрагмент в <VirtualHost *:443>
):
<Каталог "/var/www/frontends">
Требовать все предоставленные
RewriteEngine включен
# [...]
RewriteRule co2avatar-app/sdp-api$ sdp-api/test/ [PT]
RewriteRule co2avatar-app/sdp-api/(.*)$ sdp-api/$1 [PT]
# что-нибудь еще для index.html
Правило перезаписи co2avatar-app/(.+) co2avatar-app/index.html [L]
</Каталог>
# определение работника
JkMount /sdp-api/* ajp13_worker_prod
JkMount/sdp-api ajp13_worker_prod
Рабочие
# рабочие.свойства -
# worker.tomcat_home=/opt/tomcat/latest/
#
# worker.java_home должен указывать на вашу установку Java. Обычно
# у вас должны быть каталоги bin и lib под ним.
#
worker.java_home=/usr/lib/jvm/
пс=/
worker.list=ajp13_worker_prod,ajp13_worker_test,ajp13_worker_tomcat10_test,ajp_worker_tomcat10_prod
#
#------ ajp13_worker ОПРЕДЕЛЕНИЕ РАБОТЫ ----------------
#--------------------------------------------- --------------------
#
рабочий.ajp13_worker_prod.port=8009
worker.ajp13_worker_prod.host=локальный хост
рабочий.ajp13_worker_prod.type=ajp13
рабочий.ajp13_worker_test.port=8010
worker.ajp13_worker_test.host=локальный хост
рабочий.ajp13_worker_test.type=ajp13
рабочий.ajp13_worker_tomcat10_test.port=8020
worker.ajp13_worker_tomcat10_test.host=локальный хост
рабочий.ajp13_worker_tomcat10_test.type=ajp13
рабочий.ajp13_worker_tomcat10_prod.port=8019
worker.ajp13_worker_tomcat10_prod.host=локальный хост
рабочий.ajp13_worker_tomcat10_prod.type=ajp13
# мы вообще не используем балансировку нагрузки.
Я должен добавить, что ajp13_worker_prod worker указывает на службу в экземпляре Tomcat 9, ajp13_worker_tomcat10_prod worker к экземпляру Tomcat 10. Но это очень хорошо работает для другого виртуального хоста (который фактически является тестовой системой).
Все работает нормально, пока я не изменю строки
JkMount /sdp-api/* ajp13_worker_prod
JkMount/sdp-api ajp13_worker_prod
к
JkMount /sdp-api/* ajp13_worker_tomcat10_prod
JkMount/sdp-api ajp13_worker_tomcat10_prod
Службы в Tomcat работают нормально, я могу связаться с ними через завиток http://localhost:6085/[...]
. Таким образом, порты открыты для использования с локального хоста.
Но я не могу до них добраться снаружи, через апач. Здесь я получаю 500 с Сервер обнаружил внутреннюю ошибку или неправильную конфигурацию и не смог выполнить ваш запрос.
Я просмотрел все возможные файлы журнала ошибок, но не вижу проблемы, особенно в журналах Apache.
Есть ли способ протестировать работника JK?
Есть ли способ проверить коннектор Tomcat?
Это выглядит так в сервер.xml:
<Connector port="8019" proxyName="co2avatar.org" proxyPort="80" protocol="AJP/1.3" redirectPort="8443" secretRequired="false" />
. Коннектор HTTP работает, но может не этот? Существует проблема между Apache (рабочий ajp) и Tomcat, но просто запуск запроса к Apache еще не помогает.
(Вопрос новичка:) Можно ли перезапустить только модуль JK?
Вот выдержка из Apache журнал ошибок (в mod_jk.log ничего нет):
[jk:warn] [pid 1286] JkShmFile не определен в httpd.conf. Использование по умолчанию /etc/httpd/logs/jk-runtime-status
[slotmem_shm:debug] [pid 1286] mod_slotmem_shm.c(448): AH02301: прикрепить ищет /run/httpd/slotmem-shm-mod_heartmonitor.shm
[lbmethod_heartbeat:notice] [pid 1286] AH02282: Нет slotmem из mod_heartmonitor
[ssl:debug] [pid 1286] ssl_engine_pphrase.c(181): AH02199: SSL не включен на виртуальном хосте h2862201.stratoserver.net:80, пропущена настройка SSL
[ssl:debug] [pid 1286] ssl_engine_pphrase.c(239): AH02202: Init: чтение сертификата сервера из '/etc/letsencrypt/live/co2-avatar.com/cert.pem'
[ssl:debug] [pid 1286] ssl_engine_pphrase.c(239): AH02202: Init: чтение сертификата сервера из '/etc/letsencrypt/live/co2-avatar.com/cert.pem'
[ssl:debug] [pid 1286] ssl_engine_pphrase.c(239): AH02202: Init: чтение сертификата сервера из '/etc/letsencrypt/live/co2-avatar.com/fullchain.pem'
[ssl:debug] [pid 1286] ssl_engine_pphrase.c(239): AH02202: Init: чтение сертификата сервера из '/etc/letsencrypt/live/co2-avatar.com/cert.pem'
[ssl:debug] [pid 1286] ssl_engine_pphrase.c(239): AH02202: Init: чтение сертификата сервера из '/etc/letsencrypt/live/co2-avatar.com/cert.pem'
[socache_shmcb:debug] [pid 1286] mod_socache_shmcb.c(391): AH00821: shmcb_init выделил 512000 байт общей памяти
[socache_shmcb:debug] [pid 1286] mod_socache_shmcb.c(407): AH00822: для 511912 байт (512000, включая заголовок), рекомендуется 32 подкэша, по 88 индексов в каждом
[socache_shmcb:debug] [pid 1286] mod_socache_shmcb.c(440): AH00824: следуют варианты shmcb_init_memory
[socache_shmcb:debug] [pid 1286] mod_socache_shmcb.c(442): AH00825: subcache_num = 32
[socache_shmcb:debug] [pid 1286] mod_socache_shmcb.c(444): AH00826: subcache_size = 15992
[socache_shmcb:debug] [pid 1286] mod_socache_shmcb.c(446): AH00827: subcache_data_offset = 2128
[socache_shmcb:debug] [pid 1286] mod_socache_shmcb.c(448): AH00828: subcache_data_size = 13864
[socache_shmcb:debug] [pid 1286] mod_socache_shmcb.c(450): AH00829: index_num = 88
[socache_shmcb:info] [pid 1286] AH00830: инициализация socache с общей памятью
[ssl:info] [pid 1286] AH01887: Init: Инициализация (виртуальных) серверов для SSL
[ssl:debug] [pid 1286] ssl_engine_init.c(1502): Init: Перекрытие IP/портов SSL-сервера: h2862201.stratoserver.net:443 (/etc/httpd/conf.d/ssl.conf:57) vs. co2-avatar.com:443 (/etc/httpd/conf.d/vhost-le-ssl.conf:4)
[ssl:debug] [pid 1286] ssl_engine_init.c(1502): Init: Перекрытие IP/портов SSL-сервера: gitlab.sustainable-data-platform.org:443 (/etc/httpd/conf.d/gitlab-le- ssl.conf:2) и co2-avatar.com:443 (/etc/httpd/conf.d/vhost-le-ssl.conf:4)
[ssl:debug] [pid 1286] ssl_engine_init.c(1502): Init: Перекрытие IP/порта SSL-сервера: co2avatar.org:443 (/etc/httpd/conf.d/co2avatar.conf:66) против co2- avatar.com:443 (/etc/httpd/conf.d/vhost-le-ssl.conf:4)
[ssl:warn] [pid 1286] AH02292: Init: виртуальные хосты SSL на основе имени работают только для клиентов с поддержкой указания имени сервера TLS (RFC 4366)
[ssl:info] [pid 1286] AH01876: mod_ssl/2.4.6 скомпилирован для сервера: Apache/2.4.6, библиотека: OpenSSL/1.0.2k
[proxy:debug] [pid 1292] proxy_util.c(1843): AH00925: инициализация рабочего прокси: обратный общий доступ
[proxy:debug] [pid 1292] proxy_util.c(1888): AH00927: инициализация рабочего прокси: обратный локальный
[proxy:debug] [pid 1292] proxy_util.c(1939): AH00931: инициализирован обработчик одного соединения в дочернем элементе 1292 для (*)
[proxy:debug] [pid 1293] proxy_util.c(1843): AH00925: инициализация рабочего прокси: обратный общий доступ
[proxy:debug] [pid 1293] proxy_util.c(1888): AH00927: инициализация рабочего прокси: обратный локальный
[proxy:debug] [pid 1293] proxy_util.c(1939): AH00931: инициализирован обработчик одного соединения в дочернем элементе 1293 для (*)
[proxy:debug] [pid 1295] proxy_util.c(1843): AH00925: инициализация рабочего прокси: обратный общий доступ
[proxy:debug] [pid 1295] proxy_util.c(1888): AH00927: инициализация рабочего прокси: обратный локальный
[proxy:debug] [pid 1295] proxy_util.c(1939): AH00931: инициализирован обработчик одного соединения в дочернем элементе 1295 для (*)
[mpm_prefork:notice] [pid 1286] AH00163: Apache/2.4.6 (CentOS) mod_jk/1.2.48 OpenSSL/1.0.2k-fips PHP/7.2.29 настроен – возобновление нормальной работы
[mpm_prefork:info] [pid 1286] AH00164: Сервер построен: 16 ноября 2020 г., 16:18:20
[core:notice] [pid 1286] AH00094: Командная строка: '/usr/sbin/httpd -D FOREGROUND'
[mpm_prefork:debug] [pid 1286] prefork.c(1005): AH00165: принять мьютекс: sysvsem (по умолчанию: sysvsem)
[proxy:debug] [pid 1294] proxy_util.c(1843): AH00925: инициализация рабочего прокси: обратный общий доступ
[proxy:debug] [pid 1294] proxy_util.c(1888): AH00927: инициализация рабочего прокси: обратный локальный
[proxy:debug] [pid 1294] proxy_util.c(1939): AH00931: инициализирован обработчик одного соединения в дочернем элементе 1294 для (*)
[proxy:debug] [pid 1296] proxy_util.c(1843): AH00925: инициализация рабочего прокси: обратный общий доступ
[proxy:debug] [pid 1296] proxy_util.c(1888): AH00927: инициализация рабочего прокси: обратный локальный
[proxy:debug] [pid 1296] proxy_util.c(1939): AH00931: инициализирован одиночный рабочий процесс соединения в дочернем элементе 1296 для (*)
[proxy:debug] [pid 1378] proxy_util.c(1843): AH00925: инициализация рабочего прокси: обратный общий доступ
[proxy:debug] [pid 1378] proxy_util.c(1888): AH00927: инициализация рабочего прокси: обратный локальный
[proxy:debug] [pid 1378] proxy_util.c(1939): AH00931: инициализирован одиночный рабочий процесс подключения в дочернем 1378 для (*)
[proxy:debug] [pid 1408] proxy_util.c(1843): AH00925: инициализация рабочего прокси: обратный общий доступ
[proxy:debug] [pid 1408] proxy_util.c(1888): AH00927: инициализация рабочего прокси: обратный локальный
[proxy:debug] [pid 1408] proxy_util.c(1939): AH00931: инициализирован одиночный рабочий процесс подключения в дочернем 1408 для (*)
[proxy:debug] [pid 1859] proxy_util.c(1843): AH00925: инициализация рабочего прокси: обратный общий доступ
[proxy:debug] [pid 1859] proxy_util.c(1888): AH00927: инициализация рабочего прокси: обратный локальный
[proxy:debug] [pid 1859] proxy_util.c(1939): AH00931: инициализирован одиночный рабочий процесс подключения в дочернем 1859 для (*)
[proxy:debug] [pid 15109] proxy_util.c(1843): AH00925: инициализация рабочего прокси: обратный общий доступ
[proxy:debug] [pid 15109] proxy_util.c(1888): AH00927: инициализация рабочего прокси: обратный локальный
[proxy:debug] [pid 15109] proxy_util.c(1939): AH00931: инициализирован одиночный рабочий процесс соединения в дочернем элементе 15109 для (*)
[proxy:debug] [pid 17029] proxy_util.c(1843): AH00925: инициализация рабочего прокси: обратный общий доступ
[proxy:debug] [pid 17029] proxy_util.c(1888): AH00927: инициализация рабочего прокси: обратный локальный
[proxy:debug] [pid 17029] proxy_util.c(1939): AH00931: инициализирован одиночный рабочий процесс соединения в дочернем элементе 17029 для (*)