Я настраиваю Solr на Jetty. Я хотел бы ограничить доступ только к нескольким IP-адресам. Не кажется очевидным, что это можно сделать с помощью Jetty. Возможно ли, и если да, то как?Ограничение IP-адресов для Jetty и Solr
ответ
Solr 4.2.1 использует Jetty 8.1.8. Jetty 8 (как отмечено jonas789) не поддерживает .htaccess. Вместо этого он использует IPAccessHandler, который не имеет отличной документации. Мне пришлось немного поиграть, чтобы заставить его работать, поэтому я размещаю здесь обновленное решение.
IPAccessHandler управляет черным списком и белым списком, принимает произвольные диапазоны IP-адресов и поддерживает привязку определенных путей URI к каждой записи белого/черного списка. IPAccessHandler также подклассы HandlerWrapper, который оказывается важным.
Приложение solr по-прежнему работает в WebAppContext (как в решении Lyndsay), но теперь WebAppContext управляется ContextHandler, который находится в ContextHandlerCollection, занимающем слот первого обработчика на сервере. Чтобы остановить запросы от неправильного IP-адреса, чтобы попасть в приложение, нам нужно обернуть его внутри IPAccessHandler где-то по этому пути. IPAccessHandler ведет себя странно, если он находится в неправильном месте: я пробовал вставить его до обработчиков контекста, и он дал 403 Запрещено на неправильные машины, бросил 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>
Ресурсы:
Я пробовал и он отлично работает! Он блокирует доступ к 'solr admin' &' 'клиенту', используемому с других хостов, чем тот, который вы использовали. – h4k1m
Я самостоятельно прихожу к этому же решению; Я не нашел это первым. FYI эта вещь IPAccessHandler работает только с IPv4 - это ошибка/ограничение. Поэтому при запуске Java передайте: '-Djava.net.preferIPv4Stack = true'. И для тех, кто ищет предложенные правила, мои выглядят так:
Я нашел решение.
Во-первых, извлеките содержимое файла solr.war в папке example/webapps. Затем создайте файл с именем .htaccess и поместите его в примерном/WebApps/папку Solr (тот, который вы только что извлеченный), содержащий следующие:
<Limit>
satisfy all
order deny,allow
deny from all
allow from xxx.xxx.xxx.xxx
</Limit>
В примере/и т.д./редактировать файл jetty.xml и комментарий out org.mortbay.jetty.deployer.WebAppDeployer. Затем, наконец, создать папку в примерах/называемых контекстов (если один еще не существует) и добавьте файл с именем solr.xml к нему, содержащее:
<Configure id="solr" class="org.mortbay.jetty.webapp.WebAppContext">
<Set name="resourceBase"><SystemProperty name="jetty.home" default="."/>/webapps/solr</Set>
<Set name="contextPath">/solr</Set>
<Call name="setSecurityHandler">
<Arg>
<New class="org.mortbay.jetty.security.HTAccessHandler">
<Set name="protegee">
<Ref id="solr"/>
</Set>
</New>
</Arg>
</Call>
</Configure>
Затем начать свой новый защищенный Solr!
Для других это не будет работать в новых версиях Jetty, размещенных на eclipse. В основном больше нет HTAccessHandler. Ссылка: http://jetty.4.n6.nabble.com/jira-Created-JETTY-962-Clean-room-implementation-of-org-mortbay-jetty-securtiy-HTAccessHandler-td41205.html – jonas789
- 1. Запуск Solr with jetty
- 2. Ckan Solr Jetty
- 3. Конфигурирование вращения журнала Jetty/Solr
- 4. Solr + Eclipse + Jetty + custom jsp
- 5. Защита паролем Solr On Jetty
- 6. Jetty/SOLR Admin Panel Пароль
- 7. Jetty 6.1 с Solr 4.4
- 8. настройка maxFormContentSize в jetty/solr
- 9. SOLR - Ограничение результатов поиска
- 10. Jetty - настроить Jetty для регистрации только ошибок
- 11. Ограничение размера ответа SOLR
- 12. Solr + Jetty передает HTTP 503 на Debian
- 13. Debian Lenny Solr Jetty install + running
- 14. Как настроить многоядерный solr с Jetty
- 15. Solr Jetty 8 ограничивает доступ по IP
- 16. Исключения запуска Solr во встроенном Jetty
- 17. Установка Jetty или запуск встроенного для установки Solr
- 18. необходимо установить solr с сервлетом (Tomcat, Jetty и т. Д.)?
- 19. Проблема с solr-причал с новой переустановкой CKAN, Jetty и Solr
- 20. Журналы Jetty, дублированные в start.log и solr.log
- 21. Ограничение вывода из MoreLikeThis в Solr
- 22. Django Haystack Solr - Рекомендуемое расположение и структура каталогов для Solr
- 23. Solr json facet api - указать ограничение
- 24. Книга для Solr 4.6
- 25. Ограничение запросов Solr на веб-приложение
- 26. Jetty Logs Местоположение
- 27. ограничение общее количество результатов в solr
- 28. ограничение поля solr, поле с параметром "|"
- 29. Несколько экземпляров solr в Jetty или запуск нескольких серверов Jetty, который менее интенсивен?
- 30. Solr с Jetty на LAMP-сервер - Администратор страницы проблема доступа
I думаю, что вы не можете напрямую, не создавая пользовательский обработчик или фильтр. В любом случае, вы можете поставить пристань за другим веб-сервером, например Apache. – Chewie