配置了指向我的使用者目錄中文件夾的符號連結的 Apache 虛擬主機失敗並顯示 403 Forbidden
我確定以前有人問過/回答過這個問題,但我的搜尋對我沒有太大幫助,所以……
我在我的 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我已經嘗試了這部分
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/
您將需要為您的主目錄的子目錄添加一個目錄指令。當 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>