nginx中文文档-ngx_http_auth_request_module

本文介绍ngx_http_auth_request_module模块的相关指令。

ngx_http_auth_request_module模块(1.5.4+)实现了基于子请求结果的客户端认证。如果子请求返回2xx状态码,访问将被允许。如果返回401或403访问将被阻止。子请求返回的其他状态码被视为错误。
401错误时,客户端可以收到来自自球球响应的“WWW-Authenticate”头。
该模块并非默认构建,需要通过–with-http_auth_request_module编译参数开启。
该模块可以结合其他访问许可模块,如ngx_http_access_module和 ngx_http_auth_basic_module,通过satisfy指令来实现。
在1.7.3版本以前,响应的认证子请求不能被缓存。
实例配置

location /private/ {
    auth_request /auth;
    ...
}

location = /auth {
    proxy_pass ...
    proxy_pass_request_body off;
    proxy_set_header Content-Length "";
    proxy_set_header X-Original-URI $request_uri;
}

auth_request

语法:auth_request uri | off
默认:auth_request off
上下文: http, server, location

开启基于子请求的权限认证,并设置发送子请求的URI。

auth_request_set

语法:auth_request_set variable value
默认:—
上下文:http, server, location

设置在认证请求完成后给变量设的值。值可以包含认证请求的变量,如$upstream_http_*。

nginx中文文档-ngx_http_auth_basic_module

ngx_http_auth_basic_module模块允许通过HTTP基础认证方式使用用户名密码来限制对资源的访问。访问同样可以通过地址和子请求结果进行限制。同时通过地址和密码限制访问可以由satisfy指令进行控制。

示例配置

location / {
    auth_basic           "closed site";
    auth_basic_user_file conf/htpasswd;
}

auth_basic

语法:auth_basic string | off
默认:auth_basic off
上下文:http, server, location, limit_except

允许通过HTTP基础认证协议验证用户名和密码。定义的参数使用realm,参数值可以包含变量(1.3.10+, 1.2.7+)。off值会取消由上层继承下来的auth_basic值。

auth_basic_user_file

语法:auth_basic_user_file file
默认:—
上下文:http, server, location, limit_except

定义保存用户名和密码的文件,格式如下:

# comment
name1:password1
name2:password2:comment
name3:password3

文件名可以包含变量。
支持以下密码类型:

  • crypt函数加密的密码。可以通过Apache服务器的“htpasswd”应用或“openssl passwd”命令生成。
  • Apache基于MD5算法的变体哈希算法,可通过同一个工具生成
  • 通过“{scheme}data”语法定义(1.0.3+),详细描述见RFC 2307。目前实现的模式有PLAIN(举例,不应该使用)、SHA(1.3.13+)(plain SHA-1不应使用)、SSHA(加盐SHA-1)

添加对SHA模式的支持,只是便于从其他服务器的迁移。不应该用于新的密码,因为不加盐的SHA-1哈希算法易受彩虹表攻击。