Nginx配置訪問權限


基於IP配置Nginx的訪問權限

Nginx配置通過兩種途徑支持基本訪問權限的控制,其中一種是由HTTP標准模塊ngx_http_access_module支持的,通過IP來判斷客戶端是否擁有對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塊中配置。

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行了。


基於密碼配置Nginx的訪問權限

Nginx 還支持基於HTTP Basic Authentication 協議的認證。該協議是一種 HTTP 性質的認證辦法,需要識別用戶名和密碼,認證失敗的客戶端不擁有訪問Nginx服務器的權限。該功能由 HTTP 標准模塊 ngx_http_auth_basic_module 支持,這里有兩個指令需要學習。

    auth_basic指令,用於開啟或者關閉該認證功能,語法結構為:

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

 5、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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM