正如问题所暗示的,如果X-Auth
HTTP 标头已设置并包含特定字符串,我希望允许对我的网站进行完全访问。如果不是这种情况,则应触发 HTTP 基本身份验证。如下所示:
if ($http_x_auth = "some_string") {
allow access;
} else {
auth_basic "Authentication";
auth_basic_user_file /etc/nginx/security_http_basic_auth_file;
}
不幸的是,NGINX 不允许 if else 语句。有人知道如何做到这一点吗?
答案1
你可以这样做map
。
在http
块中:
map $http_x_auth $has_basic_auth {
"some_string" no_basic_auth;
default with_basic_auth;
}
在你的location
区块中:
try_files nonexistent @$has_basic_auth;
然后添加两个named location
:
location @no_basic_auth {
# insert your config
}
location @with_basic_auth {
# insert your config with basic auth
}