Ограничение коннектора Tomcat http сервером Apache
Я использую Apache 2.4 перед Tomcat 7. Я пытаюсь использовать веб-сокеты, поэтому я настроил коннектор на основе http в Tomcat, как показано ниже
<Connector port="8009" protocol="HTTP/1.1" proxyPort="80" maxPostSize="10485760" redirectPort="8443" URIEncoding="UTF-8" />
Я настроил mod_proxy и mod_proxy_wstunnel и mod_proxy_http в Apache 2.4. Соединения через веб-сокет работают нормально, когда к App обращаются через "http://webserver/myapp
".
Однако приложение также может быть доступно через http://webserver:8009/myapp
,
Я хочу, чтобы мое приложение было доступно только через веб-сервер Apache (http://webserver/myapp
), а НЕ напрямую используя tomcat (http://webserver:8009/myapp
). Я не могу использовать модули AJP (mod_proxy_ajp или mod_jk), потому что модули AJP не поддерживают веб-сокеты.
Есть ли способ, которым я могу ограничить кота Connector
только для веб-сервера Apache.
2 ответа
Вы можете использовать это.
<Context path="/manager" docBase="manager" reloadable="true" privileged="true" >
<Valve className="org.apache.catalina.valves.RemoteIpValve"/>
<Valve className="org.apache.catalina.valves.RemoteHostValve" allow="<your IP regex>"/>
</Context>
Измените соответствующие значения в контекстном пути, базе документов и IP-адресе. Это, по крайней мере, ограничит localhost.
Другой способ - слушать tomcat только на локальном хосте с помощью приведенного ниже кода.
<Connector port="8009" address="127.0.0.1"
Используйте брандмауэр на вашем сервере. Таким образом, вы не только делаете tomcat недоступным, но и любой другой процесс, который может открыть порт на этой машине.
Добавьте в белый список порты, которые вы хотите сделать доступными для мира, и по умолчанию блокируйте все остальные порты.