Назад | Перейти на главную страницу

Как использовать httpd (https / ssl) в качестве прокси-сервера для tomcat

Я установил httpd и tomcat на свой сервер, но почему-то не могу их подключить.

<VirtualHost *:80>
        ServerName www.harshrathod.dev
        ServerAlias harshrathod.dev
        ServerAdmin ******************
        DocumentRoot /var/www/html
        DirectoryIndex index.html
RewriteEngine on
RewriteCond %{SERVER_NAME} =www.harshrathod.dev [OR]
RewriteCond %{SERVER_NAME} =harshrathod.dev
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

ProxyRequests off
ProxyPass /projects/legend ajp://localhost:8009/legend
ProxyPassReverse /projects/legend ajp://localhost:8009/legend

</VirtualHost>

Доступ к странице легенды на harshrathod.dev показывает ошибку вместо ответа со страницей index.jsp в "../webapps/legend". Оба сервера запущены и работают. HTTPD прослушивается на 80 и tomcat на localhost: 8080

Мне нужно наклеить это на:

ProxyRequests off
ProxyPass /projects/legend ajp://localhost:8009/legend
ProxyPassReverse /projects/legend ajp://localhost:8009/legend

в httpd-le-ssl.conf?

В error_log есть эти ошибки, связанные с прокси

[Sun Mar 29 17:13:28.909192 2020] [proxy:error] [pid 6690] (70007)The timeout specified has expired: AH00957: AJP: attempt to connect to 120.0.0.1:8009 (120.0.0.1) failed
[Sun Mar 29 17:13:28.909285 2020] [proxy_ajp:error] [pid 6690] [client 27.56.193.67:10405] AH00896: failed to make connection to backend: 120.0.0.1, referer: https://harshrathod.dev/
[Sun Mar 29 17:18:19.513513 2020] [proxy:error] [pid 6659] (70007)The timeout specified has expired: AH00957: AJP: attempt to connect to 120.0.0.1:8009 (120.0.0.1) failed
[Sun Mar 29 17:18:19.513582 2020] [proxy_ajp:error] [pid 6659] [client 103.125.234.198:57195] AH00896: failed to make connection to backend: 120.0.0.1, referer: https://harshrathod.dev/

Ваш <VirtualHost *:80> настроен для перенаправления всего на порт 443 (по крайней мере, для harshrathod.dev и www.harshrathod.dev домены), поэтому ProxyPass директива никогда не будет выполнена.

Как вы предлагаете в своем вопросе, вы должны переместить ProxyPass и соответствующие директивы к вашему <VirtualHost *:443>.

Отметим также, что Tomcat HTTP/1.1 <Connector> в порту 8080 не используется в этой конфигурации. Вы используете AJP/1.3 <Connector> в порту 8009 вместо этого, это более быстрый протокол. Если вы хотите использовать (медленнее) HTTP/1.1 <Connector> использование:

ProxyPass /projects/legend http://localhost:8080/legend
ProxyPassReverse /projects/legend http://localhost:8080/legend