Saq*_*Ali 3 search jetty web-server solr web-application-firewall
我正在设置 Apache Solr 4.1,它将用于为 Web 应用程序索引数据。只有 Web 应用程序才能访问 Solr。用户和其他客户端不会直接与 Solr 对话。
保护此类 Solr 设置的最佳实践有哪些?
(我们使用 Jetty 来运行 Solr)
我知道您正在使用 Jetty,但我有一种使用 Tomcat 的方法,该方法有效,将在下面解释。
基本上,我已经放弃尝试去理解我认为 Java Web 应用程序在 Jetty 和 Tomcat 中保护自己的过于迟钝的方式。所以我更愿意让 Apache 承担起抵御访问的第一道防线的重任。Apache 是可靠的。如果您觉得需要额外的安全性,您可以随时安装ModSecurity 之类的工具以使其更加安全。
关键是像这样在 Apache 中创建反向代理设置。将代码添加到将运行 Solr 的主机的 Apache 配置中。我喜欢让它从一个子目录中运行,所以这个例子/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]
Run Code Online (Sandbox Code Playgroud)
现在来了mod_proxy一些可以将 Tomcat Web 应用程序路由到 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>
Run Code Online (Sandbox Code Playgroud)
在这一点上,我会重新启动 Apache,看看它是否有效。如果是这样,一切都很好!现在最后一步是进入 Tomcat XML 文件并通过添加到连接器来限制 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" />
Run Code Online (Sandbox Code Playgroud)
现在这最后一部分?也许这就是你所需要的。也许您只是希望它address="127.0.0.1"成为需要访问的一台机器的机器 IP。但话说回来,您正在使用 Jetty,所以也许有一种等效的方法可以限制 Jetty 中的一个 IP?或者您甚至可以通过 Apache 配置中的 IP 进行限制。无论哪种效果最好。
| 归档时间: |
|
| 查看次数: |
6618 次 |
| 最近记录: |