Apache-2.4

嘗試訪問 Apache 伺服器上的文件時出現 403 錯誤

  • May 22, 2018

我有一個 Ubuntu 14.04 伺服器,http://images.example.com它位於/etc/apache2/sites-enabled/richblockspoorblocks.com.conf

<VirtualHost *:80>
       ServerAdmin admin@example.com
       ServerName example.com
       ServerAlias images.example.com
       Header set Access-Control-Allow-Origin "*"
       DocumentRoot /home/username/var/www/example.com/public_html
       ErrorLog /home/username/var/www/example.com/logs/error.log
       CustomLog /home/username/var/www/example.com/logs/access.log combined
</VirtualHost>

我有一個文件/home/username/var/www/example.com/public_html/test.txt

但是當我將瀏覽器導航到 時http://images.example.com/test.txt,出現 403 禁止錯誤。

Forbidden
You don't have permission to access /test.txt on this server.

Apache/2.4.7 (Ubuntu) Server at images.example.com Port 80

這是我在跑步ls -la時看到的~/

drwxrwxr-x 3 www-data username 4096 May 20 21:32 var

error.log只有一條client denied by server configuration消息。

我已經跑了apache2 restart

我必須更改什麼才能test.txt在瀏覽器中看到?

您似乎將您的網站文件和DocumentRoot放在一個/home/user子目錄中:

   DocumentRoot /home/username/var/www/example.com/public_html

通常,Apache 在 中工作/var/www,您可能會在使用者的主目錄中嵌套這樣的錯誤。如果您上傳並將DocumentRoot指向預設位置 ( ) 以外的其他位置/var/www/,則可能需要修復所有者/組/其他及其權限,以便www-dataapache 的使用者或組 ( ) 可以讀取它們。

是否有任何理由將您的使用者家用於網路伺服器 DocumentRoot?

如果您真的想要它,您可以嘗試更改組,以允許 apache 讀取它:

我不推薦這個,除非你知道你在做什麼

chgrp -R www-data /home/username/var/www/example.com/public_html

那可能應該使它起作用。儘管您可能還必須更改某些權限,具體取決於您將文件複製/上傳到該目錄的方式。

附言。同樣,除非該目錄結構有一些非常好的理由,否則我會選擇預設的/var/www.

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