Nginx配置訪問權限

基於IP配置Nginx的訪問權限

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的訪問權限

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 }
相關文章
相關標籤/搜索