authz_core продолжает отказывать в доступе

Я настроил веб-сервер более или менее в соответствии с этим руководством ( https://wiki.apache.org/httpd/PHP-FPM) и не могу заставить PHP работать. HTML-файлы обслуживаются нормально. Я получаю следующее сообщение об ошибке:

mod_authz_core.c(802): [client <myip>:36570] AH01626: authorization result of Require all denied: denied
mod_authz_core.c(802): [client <myip>:36570] AH01626: authorization result of <RequireAny>: denied
127.0.0.1 [client <myip>:36570] AH01630: client denied by server configuration: proxy:fcgi://127.0.0.1:9000/var/www/html/test.php

Вот мой PHP-файл:

www@<server>:/var/www/html$ ls -l
-rw-rw----  1 www www-data    26 Sep  6 09:14 test.php

Как видите, файл принадлежит "www". Веб-сервер и "php-fpm" работают как "www-data".

Вот базовая конфигурация из "apache.conf":

<Directory />
        Options FollowSymLinks
        AllowOverride None
        Require all denied
</Directory>

<Directory /usr/share>
        AllowOverride None
        Require all granted
</Directory>

<Directory /var/www/html>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

Вот конфиг для моего виртуального хоста:

<VirtualHost *:80>
  ServerAdmin [email protected]

  DocumentRoot /var/www/html

  <Directory "/var/www/html">
    Options FollowSymLinks
    AllowOverride None
    Require all granted
  </Directory>

  ErrorLog /var/log/apache2/error.log

  # Possible values include: debug, info, notice, warn, error, crit,
  # alert, emerg.
  LogLevel debug

  CustomLog /var/log/apache2/access.log combined
  ServerSignature Off

  # Enable forwarding of php requests via php-fpm
  ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/html/$1
</VirtualHost>

У меня сложилось впечатление, что часть "Требовать все предоставлено" будет препятствовать доступу к файлу php, и mod_authz будет доволен этим.

Я уже проверил, что "php-fpm" прослушивает как следует:

www@<server>:/etc/php5/fpm/pool.d$ netstat -an | grep :9000
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN

Теперь у меня нет идей о том, где искать дальше. Какие-либо предложения?

2 ответа

Решение

По запросу, вот ответ с некоторыми дополнительными объяснениями.

Ошибка "клиент отклонен конфигурацией сервера" имеет несколько очень специфических причин, все из которых подробно описаны здесь http://wiki.apache.org/httpd/ClientDeniedByServerConfiguration

Как я упоминал в комментарии, блоки не влияют ни на один запрос, который проксируется, поскольку они влияют только на запросы, которые сам Apache отображает на путь файловой системы.

Найдите все блоки Location или Files, которые разрешают / запрещают доступ к базовому пути URI или файлам.php.

Решение, которое я предложил и которое, похоже, сработало, заключалось в добавлении следующего блока в виртуальный хост.

<Местоположение />
  требовать все предоставленное

Я бы по-прежнему предлагал поискать другие блоки Location / Files в оставшейся части вашей конфигурации, так как должно быть что-то еще, что первоначально вызвало отклонение запросов. Добавление этого блока позволило запрошенному начать работать из-за способа, которым Apache объединяет блоки такого рода, как описано в следующей ссылке.

https://httpd.apache.org/docs/current/sections.html

Очень важно внести изменения в раздел, относящийся к используемой вами версии Apache.

Например, если вы используете 2.4, тогда используйте 2.4:

Требовать все предоставленные

Другие вопросы по тегам