ProxyPassMatch и параметры + индексы (mod_autoindex)

У меня простая установка с Apache2.4 и PHP-FPM, и я пытаюсь включить опцию +Indexes, но получаю 404 «Файл не найден». при попытке доступа к папке, в которой нет файла индекса, даже если включен автоиндекс.

Вот часть моего vhost:

#php
ProxyPassMatch ^/(.*\.php(/.*)?)$ unix:/var/run/fpm/fatal.sock|fcgi://

#super public directory with Indexes!
<Location /pub>
    Options +Indexes
    IndexOptions +FancyIndexing
</Location>

Когда я пытаюсь получить доступ к http://domain.com/pub/, я ожидал увидеть список файлов, поставить туда, но вместо этого я получаю ошибку 404 Not Found.

Интересно, откуда это взялось, поскольку ProxyPassMatch не должен пересылать запрос, потому что в запросе нет .php, поэтому следующий индекс каталога ищет index.php, которого не существует (404), но почему тогда mod_autoindex не работает ?

Когда я удаляю строку ProxyPassMatch, автоиндекс работает нормально, и я вижу содержимое папки в списке. Любые идеи?


person nforced    schedule 03.10.2014    source источник


Ответы (1)


Я нашел ответ здесь http://blog.famillecollet.com/post/2014/03/28/PHP-FPM-and-HTTPD-2.4-improvement

Поскольку директива ProxyPassMatch оценивается в самом начале каждого запроса:

  • Директивы AddType (для MultiView) или DirectoryIndex не используются.

  • управление правами на каталог недоступно

  • каждой директиве Alias ​​требуется другое прокси-правило

Директива SetHandler, оцененная позже, гораздо более гибкая/удобная в использовании.

Поэтому я изменил свой виртуальный хост, чтобы он выглядел так, и избавился от директивы ProxyPassMatch.

<FilesMatch \.php$>
  SetHandler "proxy:unix:/var/run/fpm/fatal.sock|fcgi://"
</FilesMatch>

Примечание: это решение применимо к Apache 2.4.9+

(Интересно, есть ли разница в производительности и в каком направлении?)

person nforced    schedule 04.10.2014
comment
Возможно, стоит упомянуть, что с предлагаемым решением вам также потребуется добавить: ‹FilesMatch \.phps$› SetHandler application/x-httpd-php-source ‹/FilesMatch› Как в связанной статье. - person dadasign; 19.01.2015
comment
Я подозреваю, что производительность в этой версии немного ниже, потому что, как указывает ваша цитата, ProxyPassMatch пропускает несколько шагов, таких как управление правами каталога. Я сомневаюсь, что различия достаточно велики, чтобы быть значительными. - person Philip Couling; 01.12.2016