solr 反向代理 Apache2

solr 反向代理 Apache2

我正在尝试将 Apache2 设置为 solr 的反向代理。Apache 和 Solr 位于同一台机器上。Apache 还作为常规 Web 服务器提供其他服务。

solsearch 配置文件/etc/apache2/config.d/

# Proxy specific settings
ProxyRequests Off
ProxyPreserveHost Off

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

ProxyPass /solrsearch http://localhost:8983/solr/collection1/browse
ProxyPassReverse /solrsearch http://localhost:8983/solr/collection1/browse

现在尝试http://localhost/solsearch给我第一页http://localhost:8983/solr/collection1/浏览,但布局损坏(如缺少 CSS)。

error.logApache 的结果:

File does not exist: /var/www/solr, referer: [http://192.168.1.150/solrsearch]

答案1

HTML 内容页面中 CSS 和其他文件的链接可能是绝对路径 - 因此它们链接到/solr/path/to/css而不是path/to/css

您应该能够通过添加另一个来解决这个问题ProxyPass

ProxyPass /solrsearch http://localhost:8983/solr/collection1/browse
ProxyPassReverse /solrsearch http://localhost:8983/solr/collection1/browse
ProxyPass /solr http://localhost:8983/solr

但是,如果这是一个公开可用的服务器,您应该小心,不要暴露比您想要暴露的更多的内容。

答案2

只是为了在这里添加标签。以下代理配置允许默认 Solr 浏览器运行(使用 CSS、javascript 等)没有授予访问管理功能的权限:

<IfModule mod_proxy.c>
    # Proxy specific settings
    ProxyRequests Off

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

    # permit:
    #  * queries
    #  * javascript
    #  * css
    #  * term vectors
    # restrict:
    #  * all other traffic (admin, etc)

    ProxyPassMatch "/solr/(.*/browse)" http://localhost:8983/solr/$1
    ProxyPassMatch "/solr/(.*/terms)" http://localhost:8983/solr/$1
    ProxyPassMatch "/solr/(.*/admin/file)" http://localhost:8983/solr/$1
    ProxyPass /solr/js http://localhost:8983/solr/js
    ProxyPassReverse /solr http://localhost:8983/solr
</IfModule>

这在我的 Solr 6.1.0 系统上运行。

相关内容