Webアプリのデータのインデックス作成に使用されるApacheSolr4.1をセットアップしています。 WebアプリのみがSolrにアクセスできる必要があります。ユーザーや他のクライアントはSolrと直接話すことはありません。
このタイプのSolrセットアップを保護するためのベストプラクティスにはどのようなものがありますか?
(Jettyを使用してSolrを実行しています)
Jettyを使用していることは知っていますが、Tomcatを使用する方法があり、以下で説明します。
基本的に、私は自分が過度に鈍い方法として認識していることを理解しようとするのをあきらめましたJava WebアプリはJettyとTomcatで自分自身を保護します。したがって、Apacheが最初の行になるという重労働を許可することを好みますApacheは堅固で信頼性が高く、セキュリティを強化する必要があると感じた場合は、いつでも ModSecurity などのツールをインストールしてさらに安全にすることができます。
重要なのは、Apacheでそのようにリバースプロキシ設定を作成することです。 Solrを実行するホストのApache構成へのコード。サブディレクトリから実行するのが好きなので、この例ではProxyPass
とProxyPassReverse
の設定の例として/solr
を使用します。まず、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]
ここに、TomcatWebアプリをApacheフロントエンドにルーティングする魔法のように機能するmod_proxy
のものがあります。
# 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を再起動して、それが機能するかどうかを確認します。もしそうなら、すべて良いです!最後のステップは、Tomcat XMLファイルに移動し、コネクターに127.0.0.1
を追加して、Solrがlocalhost
/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"
を、アクセスが必要な1台のマシンのマシンIPにするだけの場合もあります。しかし、ここでもJettyを使用しているので、Jettyで1つのIPに制限する同等の方法があるのではないでしょうか。または、Apache構成でIPを介して制限することもできます。最適に機能するものは何でも。