Apache-2.4

authz_core 一直拒絕訪問

  • March 20, 2019

我根據本教程( 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

現在我不知道下一步該往哪裡看。有什麼建議麼?

根據要求,這是帶有一些額外解釋的答案。

錯誤“客戶端被伺服器配置拒絕”有一些非常具體的原因,所有這些都在這裡詳細介紹http://wiki.apache.org/httpd/ClientDeniedByServerConfiguration

正如我在評論中提到的, <Directory> 塊不會影響任何被代理的請求,因為它們只會影響 Apache 本身映射到文件系統路徑的請求。

查找允許/拒絕訪問基本 URI 路徑或 .php 文件的任何 Location 或 Files 塊。

我提出的似乎有效的解決方案是將以下塊添加到虛擬主機。

&lt;位置/&gt;
要求所有授予
&lt;/位置&gt;

我仍然建議在配置的其餘部分中尋找其他位置/文件塊,因為應該有其他東西導致請求最初被拒絕。添加此塊允許請求開始工作,因為 Apache 合併這些類型的塊的方式,如以下連結中所述。

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

引用自:https://serverfault.com/questions/801325