欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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;

allowdeny 可以在 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

运行后输入密码即可。