问 :我希望能够只为那些请求启用基本身份validation,在请求中包含特定的头文件。
使用案例:只对某些客户端请求身份validation,这些客户端的请求通过LB(并且在LB设置的头部上匹配)。
我尝试玩IF指令,但没有奏效。 Anynone有一个小configuration如何完成这个例子?
根据auth_basic指令的文档,不能在if块中使用指令,但可以使用variables作为值。
所以使用一个映射来testing特定的条件并使用结果variables。
map $http_<header_name> $authentication { default "off"; "~^" "my_realm"; } server { ... location /foo { auth_basic $authentication; auth_basic_user_file /path/to/htpasswd/file; ... } }
<header_name>模式必须用小写字母和下划线代替破折号(例如My-Header变成$http_my_header )replace为标题名称。