mod_jk Соединитель Tomcat-Apache, 1-е веб-приложение работает, 2-е веб-приложение недоступно - PullRequest
0 голосов
/ 06 июня 2018

У меня проблема с конфигурацией, которая поставила меня в тупик.У меня есть несколько веб-приложений, которые работают в Tomcat и подключены через Apache httpd.Ранее я использовал Tomcat 7 и Apache 2.2, установил Tomcat 9 и Apache 2.4 и загрузил свои веб-приложения.Я прочитал об изменениях конфигурации, и я думал, что я приспособился по мере необходимости, но по какой-то причине доступно только одно из моих двух приложений.Это должно исключить многие вещи, так как тот работает просто отлично.

Я добавлю ниже свою сокращенную конфигурацию Apache httpd.Я действительно изменил порядок, запретил, разрешил вещи требовать все, что предоставлено в файле conf.Интересно, связано ли это с директивами JkMount, но именно так это работает в Apache 2.2.Может ли это быть связано с одним из веб-приложений, работающих как ROOT /?Я вижу некоторые ошибки в моем файле mod_jk.log, такие как:

[info] jk_open_socket::jk_connect.c (817): connect to 127.0.0.1:8010 failed (errno=61)
[info] ajp_connect_to_endpoint::jk_ajp_common.c (1068): (worker1) Failed opening socket to (127.0.0.1:8010) (errno=61)
[error] ajp_send_request::jk_ajp_common.c (1728): (worker1) connecting to backend failed. Tomcat is probably not started or is listening on the wrong port (errno=61)
[info] ajp_service::jk_ajp_common.c (2778): (worker1) sending request to tomcat failed (recoverable), because of error during request sending (attempt=1)
..
[info] ajp_service::jk_ajp_common.c (2778): (worker1) sending request to tomcat failed (recoverable), because of error during request sending (attempt=2)
[error] ajp_service::jk_ajp_common.c (2799): (worker1) connecting to tomcat failed (rc=-3, errors=1, client_errors=0).
[info] jk_handler::mod_jk.c (2995): Service error=-3 for worker=worker1

Любая помощь очень ценится!

Apache 2.4 httpd.conf

Listen 80

LoadModule ssl_module modules/mod_ssl.so
LoadModule jk_module modules/mod_jk.so

JkWorkersFile conf/workers.properties
JkShmFile "logs/mod_jk.shm"
JkLogFile "logs/mod_jk.log"
JkLogLevel    info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "

JkMount / worker1
JkMount /* worker1

JkMount /webapp2 worker1
JkMount /webapp2/* worker1

ServerName sub.mydomain.com:80

Include conf/extra/httpd-ssl.conf

Apache 2.4httpd-ssl.conf

Listen 443

Protocols h2 http/1.1
SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
SSLProxyCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES
SSLHonorCipherOrder on 
SSLProtocol all -SSLv3
SSLProxyProtocol all -SSLv3
SSLPassPhraseDialog  builtin
SSLSessionCache        "shmcb:C:/Program Files/Apache Software Foundation/Apache24/logs/ssl_scache(512000)"
SSLSessionCacheTimeout  300

<VirtualHost *:80>
   ServerName sub.mydomain.com
   Redirect permanent / https://sub.mydomain.com/
</VirtualHost>

<VirtualHost _default_:443>
    ServerName sub.mydomain.com:443

    <Location />
        Require all granted
    </Location>

    <Location /webapp2>
        Require all granted
    </Location>

    SSLEngine on
    SSLCertificateFile "C:/ssl/mycert.crt"
    SSLCertificateKeyFile "C:/ssl/mykey.key"
    SSLCertificateChainFile "C:/ssl/mycabundle.crt"
</VirtualHost>

Apache 2.4 worker.properties

worker.list=worker1
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8010

Tomcat 9 server.xml

<Connector port="8010" URIEncoding="utf-8" protocol="AJP/1.3" redirectPort="8443" />

Кстати, это в Windows.

Ответы [ 2 ]

0 голосов
/ 14 июня 2018

Хорошо, я наконец понял это.Я искал не в том месте.Я протестировал другой способ, и казалось, что подключение Apache к Tomcat действительно работает и для второго веб-приложения.Проблема фактически возникла в коде PHP на другом сервере, пытающемся получить доступ к ресурсу в этом втором веб-приложении (и это единственная цель этого второго веб-приложения).Очевидно, когда я перешел с Apache httpd 2.2 на 2.4, метод, использованный в этом удаленном PHP-коде, больше не мог успешно POST-запрос к ресурсу webapp и получить результат.Код не изменился вообще.Сначала это выглядело так, как будто веб-приложение было недоступно.Когда я изменил метод PHP, используемый для POST, из fsockopen () / fwrite () / fgets () / etc.в file_get_contents (), тогда это сработало.Помогло бы более детальное сообщение об ошибке, более раннее тестирование на ранней стадии, но ничего себе, что является причиной проблемы.Я никогда бы не подумал, что это будет проблемой, и мне интересно, почему это не сработало после изменений ... что-то еще для исследования или, возможно, другой вопрос.Я не знаю, как объяснить ошибки в mod_jk.log.Возможно, у меня была временная ошибка.Но ошибок больше нет.

0 голосов
/ 09 июня 2018

Если вы в Linux.Вы должны попробовать выдать "setenforce 0".Затем, чтобы проверить, было ли это успешным, если вы введете «getenforce», вы должны получить «Permissive».

Я имею в виду все это в оболочке linux.Я пошел этим путем 2 месяца назад.

...