Webserver

設置 nginx 以提供來自子目錄的文件

  • February 12, 2016

我正在建立一個非常簡單的文件伺服器系統。我安裝了 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)。

引用自:https://unix.stackexchange.com/questions/126745