Назад | Перейти на главную страницу

обратный прокси-сервер solr Apache2

Я пытаюсь настроить Apache2 в качестве обратного прокси для solr. Apache и Solr находятся на одной машине. Apache также обслуживает другие вещи как обычный веб-сервер.

файл конфигурации 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: // локальный / solsearch дает мне первую страницу http: // локальный: 8983 / solr / collection1 / просмотр, но с неработающим макетом (например, отсутствует css).

Результат: error.log Apache:

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

Ссылки со страницы содержимого 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

Но вы должны быть осторожны, чтобы не раскрывать больше контента, чем вы хотите, если это общедоступный сервер.

просто чтобы пометить здесь. Следующая конфигурация прокси позволяет браузеру 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.