Nginx是一個免費開源且穩定高效的Web伺服器程式,有時會被用作檔案伺服器,透過HTTP提供靜態檔案給客戶端。Nginx自帶的檔案伺服器功能,可以利用網址中的路徑來直接對應伺服器的檔案系統的路徑,對於檔案系統中的目錄,Nginx甚至可以自動產生出網頁來顯示該目錄底下的文件列表。只不過基於安全性的考量,Nginx預設並未開啟這項產生檔案索引網頁的功能,如果要使用就必須手動調整Nginx的設定檔。



如下圖,預設的Nginx伺服器,在透過網址來瀏覽檔案系統中的目錄時,並不會直接把該目錄底下的所有檔案列出來,而是會回應HTTP的403狀態(Forbidden)。

nginx-autoindex

Nginx的ngx_http_autoindex_module模組

「ngx_http_autoindex_module」是Nginx預設啟用的模組,可以用來產生出檔案系統的目錄底下的檔案清單網頁。使用「ngx_http_autoindex_module」模組時,需要在Nginx設定檔中的「http」區塊或是其底下的「server」或「location」區塊中,使用「autoindex」命令來開啟「autoindex」的功能。命令如下:

autoindex on;

套用設定之後,Nginx伺服器就會產生出目錄的檔案清單網頁了!

nginx-autoindex

我們還可以使用「autoindex_exact_size」命令,來調整檔案大小的顯示單位。預設的「autoindex_exact_size」為「on」,也就是讓檔案大小以「byte」來顯示,如果要讓它自動以「KB」、「MB」或是「GB」等適當的單位來顯示的話。命令如下:

autoindex_exact_size off;

將「autoindex_exact_size」設為「off」,檔案大小的顯示方式就會變得比較平易近人。

nginx-autoindex

至於檔案清單上顯示的時間,是指檔案的修改時間,預設的時區為+0。如果要使用伺服器設定的時區,那就使用「autoindex_localtime」命令,將「autoindex_localtime」設為「on」吧!如下:

autoindex_localtime on;

nginx-autoindex

如果要替目錄的檔案清單網頁加上帳號密碼來保護,可以參考這篇文章:

https://magiclen.org/nginx-password/