Nginx 简单访问权限设置
程序员文章站
2022-05-19 08:56:52
...
主要涉及两个模块 ngx_http_access_moduel 或 ngx_auth_basic_module。下面分别说明
ngx_http_access_moduel
分为 allow
指令和 deny
指令。格式为
allow address | CIDR | all
- adress,允许访问的客户端的 IP,不支持同时设置多个。如果有多个 IP 需要设置,需要重复使用
allow
指令 - CIDR,允许访问的客户端的 CIDR 地址,例如 202.80.28.23/25,前面是 32 位 IP 地址,后面“/25”代表该 IP 地址中前 25 位是网络部分,其余代表主机部分
- all,代表允许所有客户端访问
从 Nginx 0.8.22 之后,该命令也支持 IPv6 地址,比如:
allow 2620:100:e000:8001;
allow
和 deny
可以在 http、server 块或者 location 块中配置。在使用这两个指令时,要注意设置为 all 的用法。请看下面的例子:
location / {
deny 192.168.1.1;
allow 192.168.1.0/24;
deny all;
}
Nginx 配置在解析的过程中,遇到 deny
指令或者 allow
指令时按照顺序对当前客户端的连接进行访问权限检查的。如果遇到匹配的配置时,则停止继续向下搜索的相关配置。因此,当 192.168.1.0/24 客户端访问时,Nginx 在第 3 行解析配置发现允许该客户端访问,就不会继续向下解析第 4 行了。
ngx_auth_basic_module
auth_basic
指令,用于开启或者关闭该认证功能,语法结构为:
auth_basic string | off;
- string,开启该认证功能,并配置验证时的指示信息。
- off,关闭该认证功能
auth_basic_user_file 指令,用于设置包含用户名和密码信息的文件路径,语法结构为:
auth_basic_user_file file;
其中,file 为密码文件的绝对路径。
这里的密码文件支持明文或者密码加密后的文件。明文格式如下:
name1:password1
name2:password2:comment
name3:password3
加密密码可以使用 crypt() 函数进行密码加密的格式,在 Linux 平台上可以使用 htpasswd
命令生成。在 PHP 和 Perl 等语言中,也提供 crypt() 函数。使用 htpasswd
命令的一个示例为:
htpasswd -c -d /nginx/conf/pass_file username
运行后输入密码即可。
上一篇: 简述MySQL与Oracle的区别