Я хочу, чтобы Tomcat 8080 прослушивал только 127.0.0.1 и использовал обратный прокси-сервер для Windows Apache 2.4, который использует частную сеть ServerName
Я не хочу, чтобы порт Tomcat 8080 был доступен вне машины, на которой запущен Tomcat.
Развернутое веб-приложение Tomcat представляет собой веб-приложение Spring MVC со страницей входа в систему безопасности Spring *
Я попробовал простую настройку по этим ссылкам, вопросам и документам apache:
Как установить IP-адрес для кота?
https://cgsrv1.arrc.csiro.au/blog/2009/07/10/tomcat-listen-only-on-localhost/
https://julienprog.wordpress.com/2017/06/21/how-to-bind-apache-server-non-localhost-to-tomcat-server/
https://wiki.jasig.org/display/UPM43/Fronting+Tomcat+with+Apache+HTTP+Server
То, что происходит, похоже - коннектор обратного прокси или tomcat перенаправляет клиента
браузер для HTTP localhost / acme - вместо предоставления фронтальному прокси-серверу apache данных из HTTP localhost: 8080 / acme
Клиентский браузер должен получать / отображать данные по URL: https my.server.domain / acme
Я хочу, чтобы поток был:
пользовательский клиент -> https apache -> http tomcat http -> https apache -> пользовательский клиент
apache и tomcat живут на одном компьютере с сервером Windows 7 с jdk8
Я не вижу ничего полезного или ошибок в каких-либо журналах
Я думаю, что tomcat правильно слушает только 127.0.0.1 - но когда происходит обратный прокси-сервер apache,
он получает данные от tomcat, а затем по какой-то причине создает браузер клиента (отдельный сетевой компьютер)
получить направление на:
HTTP localhost / acme вместо того, чтобы позволить URL-адресу браузера клиента оставаться включенным: https my.server.domain / acme
Обратите внимание, что браузер клиента не пытался перейти на 8080, так что это хорошо
Клиент определенно не размещает свое собственное веб-приложение с URL-адресом HTTP localhost / acme, на который он перенаправляется, поэтому в браузере клиента отображается
Ошибка HTTP 404. Запрашиваемый ресурс не найден.
Я не думаю, что виновной будет страница входа в систему безопасности MVC Spring
У моего apache httpd.conf есть эта строка: ServerName my.server.domain: 80
Я думаю, что не могу изменить это значение, потому что мое общее имя SSL-сертификата и SAN основано на этом имени частной сети, поэтому мне нужно, чтобы оно оставалось таким
для правильного подключения SSL.
Я использую Rewrite, чтобы требовать SSL ниже, но я не думаю, что это будет проблемой
Я могу заставить прокси / обратный прокси и https работать без полной цели блокирования 8080, выполнив это:
apache httpd.conf:
ProxyPass /acme http://my.server.domain:8080/acme
ProxyPassReverse /acme http://my.server.domain:8080/acme
tomcat server.xml: (примечание: не прослушивает только 127.0.0.1)
<Connector
port="8080"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
proxyPort="80" />
<Connector
port="8009"
protocol="AJP/1.3"
redirectPort="8443" />
Ниже приведены мои конфигурационные файлы, которые вызывают нежелательное перенаправление браузера:
apache httpd.conf
Listen 80
ServerName my.server.domain:80
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
ProxyPass /acme http://localhost:8080/acme
ProxyPassReverse /acme http://localhost:8080/acme
LoadModule rewrite_module modules/mod_rewrite.so
Include conf/extra/httpd-vhosts.conf
Include conf/extra/httpd-ssl.conf
apache httpd-vhosts.conf
# I have this so httpS only is supported
<VirtualHost _default_:80>
ServerName my.server.domain
RewriteEngine On
RewriteCond %{SERVER_PORT} !443
RewriteRule ^(/(.*))?$ https://%{HTTP_HOST}/$1 [R=301,L]
</VirtualHost>
apache httpd-ssl.conf
Я установил свои пути для: сертификата сервера, секретного ключа, промежуточного сертификата CA
tomcat server.xml
<!-- Note: proxyPort="80" I think is correct right? (from docs) -->
<Connector
address="127.0.0.1"
port="8080"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
proxyPort="80" />
<Connector
address="127.0.0.1"
port="8009"
protocol="AJP/1.3"
redirectPort="8443" />
==============================================
Конечно, я могу использовать Windows IP-фильтрацию и для блока 8080, я надеялся, что этот адрес соединителя тоже будет работать