First Point, фильтрация запросов на основе имени хоста DNS «дорогая». Он заставляет tomcat выполнять обратный поиск DNS. Когда запрос появляется, он не содержит DNS-имя, а просто IP-адрес клиента. Поэтому tomcat должен задать системе имя (или имена), которое соответствует IP-адресу клиента.
Если вы хотите принять запрос от определенного имени хоста, вы, возможно, уже знаете IP-адрес (или диапазон IP-адресов), который соответствует имени хоста. Если это так, вы можете использовать Remote Address Filter
, чтобы установить для него требуемое значение (IP-адреса).
Вторая точка, используя Remote Address Filter
, дает гибкость с двумя атрибутами, allow
и deny
.
Пример:
ПРИМЕЧАНИЕ: IP-адрес, используемый здесь, чтобы показать, как пример.
Предположим, что есть имя хоста myhostname
с диапазоном IP-адресов 134.87.13.0 - 134.87.13.255
. Вы хотите разрешить только этот диапазон и отклонить все остальные. Вы бы просмотрели DNS для этого диапазона. Скажем, если вы найдете его как 164.32.90.100
.
Тогда вы бы настроить клапан, как:
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="164\.32\.90\.100, 134\.87\.13\.\d{1,3}" />
Теперь предположим, что в пределах диапазона, вы хотите запретить поддиапазон 134.87.13.51 - 134.87.13.60
.
Тогда вы бы настроить клапан, как:
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="164\.32\.90\.100, 134\.87\.13\.\d{1,3}" deny="134\.87\.13\.(5[1-9]|60)" />
Настройка динамических значений для allow
и deny
возможно с помощью регулярных выражений.
Возможно, эти данные помогут вам решить вашу проблему.
Edited
Один последний момент, если вы разрешить/запретить выбор IP-адресов, вы не должны отклонить запрос от «локальный». Поэтому добавьте 127\.0\.0\.1
в свой диапазон разрешений.
Проверьте этот вопрос: http://stackoverflow.com/questions/1839618/tomcat-valve-settings –