4

I am trying to setup Apache2 as Reverse Proxy for solr. Apache and Solr are on the same machine. Apache is serving other stuff as regular web server, too.

solsearch config file in /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

Now trying http://localhost/solsearch gives me the first page of http://localhost:8983/solr/collection1/browse, but with broken layout (like css missing).

Result: error.log of apache:

File does not exist: /var/www/solr, referer: [http://192.168.1.150/solrsearch]
Reaces
  • 5,547
  • 4
  • 36
  • 46
Steven
  • 41
  • 1
  • 2

2 Answers2

4

The links from the HTML content page for the CSS and other files are probably absolute paths - so they're linked to /solr/path/to/css instead of path/to/css.

You should be able to solve this by adding another ProxyPass:

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

But, you should be careful that that's not exposing more content than you want exposed if this is a publicly available server.

Shane Madden
  • 112,982
  • 12
  • 174
  • 248
3

just to tag on here. The following proxy configuration permits the default Solr browser to operate (with CSS, javascript, etc) without giving access to the admin functions:

<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>

This is working on my Solr 6.1.0 system.

krivard
  • 182
  • 2
  • 9