Обеспечение Apache Solr в производстве

Если Вы ищете что-то на арене SOHO, то "Сервер SME" может добиться цели.

http://wiki.contribs.org

Я недавно нашел его и играл с ним на тестовом поле. Это кажется довольно твердым.

Это будет заботиться обо всем нормальном материале; совместное использование файла/печати, сеть, электронная почта и NAT.

Это будет также действовать как старый PDC стиля NT.

Хороший обзор может быть найден здесь http://www.theregister.co.uk/2010/11/17/review_sme_server/

3
задан 28 January 2013 в 18:55
2 ответа

Я знаю, что вы используете Jetty, но у меня есть метод с использованием Tomcat, который работает и объясню ниже.

По сути, я отказался от попыток понять то, что я считаю чрезмерно тупыми способами Веб-приложения Java защищают себя в Jetty и Tomcat. Поэтому я предпочитаю позволять Apache выполнять тяжелую работу и быть первой линией защиты от доступа. Apache прочный и надежный. А если вы чувствуете потребность в дополнительной безопасности, вы всегда можете установить такие инструменты, как ModSecurity , чтобы сделать его еще более безопасным.

Ключ в том, чтобы создать обратный прокси-сервер в Apache, подобный этому. Код в конфигурации Apache для хоста, на котором будет работать Solr. Мне нравится, когда он запускается из подкаталога, поэтому в этом примере используется / solr в качестве примера для настроек ProxyPass и ProxyPassReverse . Во-первых, это настройки для добавления косой черты в конце URL-адресов, чтобы вызовы http: //my.server.is.great/solr переводились на http://my.server.is. great / solr /

# Settings for adding a trailing slash to the URL
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/(solr)$
RewriteRule ^(.*)$ http://%{HTTP_HOST}$1/ [R=301,L]

А вот и материал mod_proxy , который творит чудеса маршрутизации веб-приложения Tomcat во внешний интерфейс Apache.

# Settings for Solr in Apache
<IfModule mod_proxy.c>

    # Proxy specific settings
    ProxyRequests Off
    ProxyPreserveHost On

    <Proxy *>
        AddDefaultCharset off
        Order deny,allow
        Allow from all
    </Proxy>

    ProxyPass /solr http://localhost:8080/solr/
    ProxyPassReverse /solr http://localhost:8080/solr/

</IfModule>

На этом этапе я бы перезапустил Apache и посмотрел, работает ли это . Если да, то все хорошо! Теперь последний шаг - войти в XML-файл Tomcat и ограничить Solr, чтобы он отвечал только на запросы localhost / 127.0.0.1 , добавив address = "127.0.0.1" к разъему.

<Connector port="8080" protocol="HTTP/1.1"
                       address="127.0.0.1"
                       connectionTimeout="20000"
                       URIEncoding="UTF-8"
                       redirectPort="8443" />

Теперь последняя деталь? Может, это все, что тебе нужно. Может быть, вы просто хотите, чтобы address = "127.0.0.1" вместо этого был IP-адресом той машины, которой нужен доступ. Но опять же, вы используете Jetty, поэтому, возможно, есть эквивалентный способ ограничить один IP-адрес в Jetty? Или вы даже можете ограничить через IP в конфигурации Apache. Все, что работает лучше всего.

5
ответ дан 3 December 2019 в 05:29

Если возможно, используйте SSL и потребуйте аутентификацию для всего.

Для SSL см. документацию Jetty .

Для аутентификации существует хороший пример для Jetty в документации Solr .

1
ответ дан 3 December 2019 в 05:29

Теги

Похожие вопросы