Solr 4.2.1 использует Jetty 8.1.8.Jetty 8 (как отметил jonas789) не поддерживает .htaccess.Вместо этого он использует IPAccessHandler, который не имеет большой доступной документации.Мне пришлось немножко поиграть с ним, чтобы заставить его работать, поэтому я публикую здесь обновленное решение.
IPAccessHandler управляет черным списком и белым списком, принимает произвольные диапазоны IP-адресов,и поддерживает присоединение определенных путей URI к каждой записи белого / черного списка.IPAccessHandler также подклассов HandlerWrapper, что оказывается важным.
Приложение solr все еще живет в WebAppContext (как в решении Линдсея), но теперь WebAppContext управляется ContextHandler, который находится в ContextHandlerCollection, занимающем Contextпервый слот обработчика на сервере.Чтобы запретить попадание запросов с неправильного IP-адреса в приложение, нам нужно обернуть его внутри IPAccessHandler где-нибудь по этому пути.IPAccessHandler ведет себя странно, если он находится в неправильном месте: я попытался вставить его до обработчиков контекста, и он выдал 403 Forbidden на неправильные машины, бросил истерики NullPointerException без дополнительных сообщений об ошибках, всякая чепуха.Я наконец заставил его работать, обернув сам ContextHandlerCollection на уровне сервера.
Перейдите к etc/jetty.xml
и прокрутите до раздела обработчиков.Затем оберните существующий элемент ContextHandlerCollection следующим образом:
<!-- =========================================================== -->
<!-- Set handler Collection Structure -->
<!-- =========================================================== -->
<Set name="handler">
<New id="Handlers" class="org.eclipse.jetty.server.handler.HandlerCollection">
<Set name="handlers">
<Array type="org.eclipse.jetty.server.Handler">
<Item>
<!-- here begins the new stuff -->
<New class="org.eclipse.jetty.server.handler.IPAccessHandler">
<Call name="addWhite">
<Arg>xxx.xxx.xxx.xxx</Arg>
</Call>
<Set name="handler">
<!-- here's where you put what was there before: -->
<New id="Contexts" class="org.eclipse.jetty.server.handler.ContextHandlerCollection"/>
</Set>
</New>
<!-- here ends the new stuff -->
</Item>
<Item>
<New id="DefaultHandler" class="org.eclipse.jetty.server.handler.DefaultHandler"/>
</Item>
<Item>
<New id="RequestLog" class="org.eclipse.jetty.server.handler.RequestLogHandler"/>
</Item>
</Array>
</Set>
</New>
</Set>
Ресурсы: