如何使用ProxyPass设置在Tomcat上保护Solr?

时间:2013-12-06 15:23:32

标签: security tomcat solr

我想阻止外界访问solr。根据我在网络上其他地方找到的说明,我可以通过在tomcat server.xml文件中添加以下行来实现这一点。

<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127.0.0.1"/>

这似乎运作良好。

但是,我有一个Jquery应用程序,它将选择查询发送到solr以返回结果。

自添加此行以来,Jquery响应返回403错误。

我猜这个问题是因为我正在使用Jquery,它是客户端的IP试图访问solr而不是本地主机。

但是我很困惑,因为我在apache中设置了一个proxypass来访问solr,并认为在这种情况下会使用localhost I.P.

这是我的Proxypass设置:

# Proxy specific settings
ProxyRequests Off
ProxyPreserveHost Off

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

ProxyPass /solrsearch http://localhost:8080/solr/collection1/select
ProxyPassReverse /solrsearch http://localhost:8080/solr/collection1/select

我需要做些什么才能确保apache充当代理并且不会将客户端的IP传递给solr?

1 个答案:

答案 0 :(得分:0)

我做了这个工作。

打开tomcat的访问日志后,我能够看到对

的请求

http://mydomain.com/solrsearch使用I.P 0:0:0:0:0:0:0:1

进行制作

所以我将server.xml规则更改为

<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="0:0:0:0:0:0:0:1"/>

现在一切正常!我的Jquery实时搜索能够进行查询,但是无法从外部世界访问从另一个URL(例如管理界面或更新URL)连接到solr的任何尝试。