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

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

我確信之前有人問過/回答過這個問題,但我的搜尋對我沒有多大幫助,所以......

我在我的 Linux 機器 (LM13) 上安裝了 Eclipse IDE,其中「工作空間」資料夾位於 @ /home/user/projects/workspace

我安裝並設定了 Apache,使用各種虛擬主機,所有這些虛擬主機的資料夾都位於 Web 根目錄下/var/www/...

我遇到的問題是,Apache 無法存取我為 Eclipse 工作區中的專案配置的虛擬主機,因此顯示“403 - 禁止 - 您無權訪問 / ”這個伺服器。

首先,我只是嘗試了「正常」虛擬主機配置,然後嘗試使用 web-root @ 下的 SymLink /var/www/freelance/project連結到 Eclipse 工作區中的專案資料夾

我已經嘗試了FollowSymLinks和部分SymLinksIfOwnerMatch下的選項指令<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/

答案1

您將需要為您的主目錄的子目錄新增一個目錄指令。當 Apache 存取符號連結時,將存取的是符號連結指向的實際目錄,而不是符號連結指標。

所以,你需要做兩件事:

首先,作業系統權限。您的目錄需要對 Apache 使用者可讀,這表示其上方層次結構中的所有目錄都需要為 Apache 使用者設定執行位。

其次,Apache的配置。需要告訴 Apache 可以從該目錄讀取。通常,您會想要限制 Apache 只允許讀取有限的目錄層次結構 - 否則,任何 Web 使用者都可能查看您的密碼文件,或瀏覽每個人的主目錄。因此,當您想要存取 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>

相關內容