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 admin@example.com

  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
задан 6 September 2016 в 14:49
2 ответа

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

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

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

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

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

<Location />
  require all granted
</Location>

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

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

2
ответ дан 3 December 2019 в 11:31

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

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

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

0
ответ дан 3 December 2019 в 11:31

Теги

Похожие вопросы