1. 程式人生 > >nginx配置目錄訪問&使用者名稱密碼控制

nginx配置目錄訪問&使用者名稱密碼控制

背景

專案上需要一些共享目錄讓外地同事可以網頁訪問對應的檔案,且受許可權控制;
現有環境:

  1. centos
  2. nginx

你可以瞭解到以下內容:

  • 配置nginx開啟目錄訪問
  • 並配置nginx使用者名稱和密碼進行許可權控制

1/2 列出目錄列表

autoindex on; # 開啟目錄檔案列表

還可以加一些其它的功能,以下是我使用的附加配置:

autoindex_exact_size on; # 顯示出檔案的確切大小,單位是bytes
autoindex_localtime on; # 顯示的檔案時間為檔案的伺服器時間
charset utf-8,gbk; # 避免中文亂碼

2/2 加上使用者名稱和密碼(需要安裝軟體)

a. 安裝httpd-tools

yum -y install httpd-tools

b. 使用htpasswd生成指定使用者名稱和密碼的許可權檔案,示例如下,按照提示輸入兩次密碼

# 在/etct/nginx目錄下,生成passwd110檔案
# 新增test110使用者
htpasswd -c /etc/nginx/passwd110 test110

htpasswd還有其它引數,可以通過htpasswd -h來檢視,例如可以指定一些密碼加密方式

c. 配置nginx

auth_basic "input your password"; #這裡是驗證時的提示資訊 
auth_basic_user_file /etc/nginx/passwd110;

示例

完成配置示例(開啟/var/www/logs 目錄列表,並且需要使用者名稱和密碼訪問)如下:

location /logs {
    root /var/www/;
    autoindex on; # 開啟目錄檔案列表
    autoindex_exact_size on; # 顯示出檔案的確切大小,單位是bytes
    autoindex_localtime on; # 顯示的檔案時間為檔案的伺服器時間
    charset utf-8,gbk; # 避免中文亂碼
    # add_header Content-Disposition attachment;
    # 以下是配置使用者名稱和密碼訪問
    auth_basic "Please input password"; #這裡是驗證時的提示資訊 
    auth_basic_user_file /etc/nginx/passwd110;
}