我想阻止外界访问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?
答案 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的任何尝试。