Webserver
設置 nginx 以提供來自子目錄的文件
我正在建立一個非常簡單的文件伺服器系統。我安裝了 nginx 並將其根目錄設置為
/home
以使其從使用者的主目錄提供文件。但是,當我嘗試通過
http://12.34.56.78/user1/testfile.bin
瀏覽器下載文件時,它會顯示“403 Forbidden”。但是,當我使用瀏覽器連接http://12.34.56.78/
時,它會顯示我放入的預設索引頁面/home/
。如何讓 nginx 從使用者目錄提供文件?例如
/home/user1
/home/user2
另外,如果我想排除根目錄
/home
和系統文件
.bash_history
.bash_profile
.bashrc
(例如,所有名稱以點開頭的文件)從正在服務的文件中?
Nginx 無權讀取使用者文件。將所有使用者文件放在 Web 上是一個非常糟糕的主意。
一個更好的主意是只在使用者主目錄中提供一個專用目錄。
要
www
在訪問時為每個使用者文件夾中的文件夾提供服務/<USER>
,請使用以下位置:location ~ ^/(.+?)(/.*)?$ { alias /home/$1/www$2; index index.html index.htm; autoindex on; }
您還應該允許 Nginx 訪問此目錄。
$ chmod 0755 /home/$USER/www
很多時候 403 錯誤是由於權限問題造成的。Web 目錄中的文件應該是全球可讀的(chmod 644 或 664),目錄應該是全球可讀和可執行的(chmod 755 或 775)。