Если Вы ищете что-то на арене SOHO, то "Сервер SME" может добиться цели.
Я недавно нашел его и играл с ним на тестовом поле. Это кажется довольно твердым.
Это будет заботиться обо всем нормальном материале; совместное использование файла/печати, сеть, электронная почта и NAT.
Это будет также действовать как старый PDC стиля NT.
Хороший обзор может быть найден здесь http://www.theregister.co.uk/2010/11/17/review_sme_server/
Я знаю, что вы используете 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. Все, что работает лучше всего.
Если возможно, используйте SSL и потребуйте аутентификацию для всего.
Для SSL см. документацию Jetty .
Для аутентификации существует хороший пример для Jetty в документации Solr .