Сервер Apache: обратный прокси и переопределение конечной точки, которая обслуживает статические файлы - PullRequest
0 голосов
/ 29 апреля 2018

Я пытаюсь настроить простое приложение на Python, используя Apache2 в качестве обратного прокси. Приложение Python предназначено для предоставления списка каталогов на одной из его конечных точек. Однако я хочу, чтобы Apache обработал этот список каталогов. Более подробно, это мое желаемое поведение:

  1. Все запросы к http://example.com/pypi перенаправляются в приложение Python, работающее через порт 8080. Так, например, у этого приложения есть страницы в местах "/ simple" и "/ packages", которые должны быть доступны по адресу http://example.com/pypi/simple и http://example.com/pypi/packages, соответственно.
  2. Приложение Python отображает некоторый HTML в предположении, что приложение имеет корень в «/». Поскольку он на самом деле находится в "/ pypi", я должен переписать некоторые ссылки HTML. Например, когда он пишет <a href="http://example.com/simple">, его необходимо переписать в <a href="http://example.com/pypi/simple">.
  3. Расположение "/ packages" приложения Python содержит список каталогов. Но для повышения производительности я хочу переопределить запросов на http://example.com/pypi/packages, чтобы Apache вместо этого обрабатывал список каталогов и обслуживал содержимое файлов.

Мне удалось получить 1 и 2 работы, но 3 не работает. Запросы к http://example.com/pypi/packages все еще направляются в приложение Python. Вот моя конфигурация сайта Apache:

<VirtualHost *:80>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    ServerName example.com

    Alias /pypi/packages /home/somebody/pypi-server/pypi-packages
    <Directory /home/somebody/pypi-server/pypi-packages>
        Options +Indexes
        Require all granted
    </Directory>

    ProxyPass /pypi/ http://localhost:8080/
    Redirect /pypi /pypi/
    ProxyPassReverse /pypi/simple/ http://example.com/simple/

    ProxyPreserveHost On

    <Location "/pypi/">
        SetOutputFilter proxy-html
        ProxyHTMLURLMap "^/(simple|packages)/" "/pypi/$1/" [R]
    </Location>
</VirtualHost>

Да, у меня включен модуль автоиндексирования. Список каталогов работает отлично, если я изменю первый аргумент директивы Alias ​​на что-то вроде "/ xyz". Затем http://example.com/xyz делает именно то, что я хочу http://example.com/pypi/packages. Пожалуйста, помогите, заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...