2014-10-03 3 views
1

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

Вот часть моего виртуального хоста:

#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, autoindex работает нормально, и я вижу содержимое папки, указанное в списке. Любые идеи?

ответ

4

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

As the ProxyPassMatch directive is evaluated as the very beginning of each request: 
-AddType (for MultiView) or DirectoryIndex directives are not usable 
-right management per directory is not available 
-each Alias directive needs another proxy rule 

The SetHandler directive, evaluated later, is much more flexible/usable. 

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

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

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

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

+0

Может быть, стоит отметить, что с предложенным решением, которое вы также должны добавить: SetHandler применение/х-HTTPD-PHP-исток Как и в связанном статье. – dadasign

+0

Я подозреваю, что в этой версии производительность немного меньше, потому что, как указывает ваша цитата, 'ProxyPassMatch' пропускает несколько шагов, таких как управление правами каталога. Я сомневаюсь, что различия достаточно велики, чтобы быть значительными. –

Смежные вопросы