Apache-2.2

配置了指向我的使用者目錄中文件夾的符號連結的 Apache 虛擬主機失敗並顯示 403 Forbidden

  • August 23, 2012

我確定以前有人問過/回答過這個問題,但我的搜尋對我沒有太大幫助,所以……

我在我的 Linux 機器(LM13)上安裝了 Eclipse IDE,‘workspace’ 文件夾位於 @ /home/user/projects/workspace

我安裝並設置了 Apache,使用各種虛擬主機,所有這些虛擬主機的文件夾都位於 web-root 下/var/www/...

我遇到的問題是 Apache 無法訪問我為 Eclipse Workspace 中的項目配置的虛擬主機,因此給了我“403 - 禁止 - 您無權訪問 / on這個伺服器。”

首先我只是嘗試了一個“普通”的虛擬主機配置,然後我嘗試使用 /var/www/freelance/project連結到 Eclipse 工作區中項目文件夾的 web-root @ 下的 SymLink

我已經嘗試了這部分FollowSymLinksSymLinksIfOwnerMatch的選項指令,<directory ...>但我仍然無法在瀏覽器中使用 Apache 訪問它!

誰能向我解釋一下如何讓這個設置正常工作?我還沒有嘗試使用mod_userdir,或者在我的/home文件夾上設置文件權限以允許訪問 Apache,因為這些似乎都不受歡迎。還有其他方法嗎?

這是我的虛擬主機配置:

# Apache VHOST config for IAGD
<VirtualHost my.iagd:80>
   NameVirtualHost my.iagd:80
   ServerAlias *.my.iagd
#   ServerAdmin username@domain

   DocumentRoot /var/www/freelance/iagd

   <Directory /var/www/freelance/iagd/>
       Options FollowSymLinks SymLinksIfOwnerMatch
       AllowOverride All
       Order deny,allow
       Deny from all
       Allow from 127.0.0.1
   </Directory>

   # Define custom log level
   LogLevel warn

   # Set up custom log files
   ErrorLog ${APACHE_LOG_DIR}/iagd/error.log
   CustomLog ${APACHE_LOG_DIR}/iagd/access.log combined
</VirtualHost>

更新

輸出ls -alFd ~/Projects/workspace/iagd:-

   drwxr-xr-- 6 user www-data 4096 Aug 22 14:12 IAGD/

相同的輸出/home/user:-

   drwx------ 74 user user 20480 Aug 23 07:30 /home/user/

您將需要為您的主目錄的子目錄添加一個目錄指令。當 Apache 訪問符號連結時,將訪問符號連結指向的實際目錄,而不是符號連結指針。

所以,你需要兩件事:

首先,作業系統權限。您的目錄需要對 Apache 使用者可讀,這意味著它上面的層次結構中的所有目錄都需要為 Apache 使用者設置執行位。

其次,Apache的配置。需要告知 Apache 可以從該目錄中讀取。通常,您會希望將 Apache 限制為只允許讀取有限的目錄層次結構 - 否則,任何網路使用者都可能會查看您的密碼文件,或瀏覽每個人的主目錄。因此,當您想要訪問 webroot 層次結構之外的目錄時,您需要添加一個指令告訴 Apache 允許它。它看起來像這樣:

# Apache VHOST config for IAGD
<VirtualHost my.iagd:80>
   NameVirtualHost my.iagd:80
   ServerAlias *.my.iagd
#   ServerAdmin username@domain

   DocumentRoot /var/www/freelance/iagd

   <Directory /var/www/freelance/iagd/>
       Options FollowSymLinks SymLinksIfOwnerMatch
       AllowOverride All
       Order deny,allow
       Deny from all
       Allow from 127.0.0.1
   </Directory>

   <Directory /home/user/projects/workspace>
       AllowOverride All
       Order deny,allow
       Deny from all
       Allow from 127.0.0.1
   </Directory>

   # Define custom log level
   LogLevel warn

   # Set up custom log files
   ErrorLog ${APACHE_LOG_DIR}/iagd/error.log
   CustomLog ${APACHE_LOG_DIR}/iagd/access.log combined
</VirtualHost>

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