Nginx配置經過兩種途徑支持基本訪問權限的控制,其中一種是由HTTP標準模塊ngx_http_access_module支持的,經過IP來判斷客戶端是否擁有對Nginx的訪問權限,這裏包括兩個指令:nginx
allow指令,用於設置容許訪問Nginx的客戶端IP;服務器
allow address | CIDR | all
#address,容許訪問的客戶端IP,不支持同時設置多個。若是有多個IP須要設置,須要重複使用allow指令
#CIDR,容許訪問的客戶端的CIDR地址,例如 172.10.10.1/100,前面是32位IP地址,後面「\25」表明該IP地址中前25位是網絡部分,其他位表明主機部分。
#all,表明容許全部客戶端訪問。
從Nginx 0.8.22版本後,該命令也支持IPv6地址,好比:網絡
allow 2620:100:e000::8001;函數
deny指令,與allow正好相反,用於設置禁止訪問Nginx客戶端IP學習
deny address | CIDR | all;加密
這兩個指令能夠在http塊、server塊或者location塊中配置。spa
1 location / { 2 deny 192.168.1.1; 3 allow 192.168.1.0/24; 4 deny all; 5 }
在以上例子中192.168.1.0/24客戶端是能夠訪問的。由於,Nginx配置在解析的過程當中,遇到deny指令或者allow指令是按照順序對當前客戶端的鏈接進行訪問權限檢查的。若是遇到匹配的配置時,則中止繼續向下搜索相關配置。所以,當192.168.1.0/24客戶端訪問時,Nginx在第三行解析配置發現容許該客戶端訪問,就不會繼續向下解析第4行了。code
Nginx 還支持基於HTTP Basic Authentication 協議的認證。該協議是一種 HTTP 性質的認證辦法,須要識別用戶名和密碼,認證失敗的客戶端不擁有訪問Nginx服務器的權限。該功能由 HTTP 標準模塊 ngx_http_auth_basic_module 支持,這裏有兩個指令須要學習。server
auth_basic指令,用於開啓或者關閉該認證功能,語法結構爲:blog
auth_basic string | off;
其中,file爲密碼文件的絕對路徑。
這裏的密碼文件支持明文或者密碼加密後的文件。明文的格式以下所示:
1 name1:password1 2 name2:password2:comment 3 name3:password3
加密密碼可使用crypt()函數進行密碼加密的格式,也可以使用htpasswd命令生成:
htppasswd d:\nginx\conf\htpasswd username
myzhao是認證的帳戶名稱,須要輸入兩次密碼,而後htppasswd文件中保存的就是加密後的密碼:
htppasswd(第三個冒號後可作註釋也可沒有):
myzhao:$apr1$JAVltvyq$4k0V5tWy0Ec0JI5eiZrfJ.:123456
五、6兩行這次新增的配置:
1 location /software { 2 autoindex on; 3 autoindex_exact_size off; 4 autoindex_localtime on; 5 auth_basic "Restricted"; 6 auth_basic_user_file htpasswd; 7 }