要求 nginx 中的特定 IP 进行基本身份验证

要求 nginx 中的特定 IP 进行基本身份验证

我有一个 nginx 的 IP 白名单,但除此之外,我还想对特定 IP 进行基本身份验证。

例如,允许以下 IP 访问:

198.51.100.1
198.51.100.2

需要对此 IP 进行基本身份验证:

198.51.100.3

并拒绝其他任何人。

这怎么可能?satisfy指令似乎没有解决这个问题

答案1

您可以使用 GEO 指令实现这一点:http://nginx.org/en/docs/http/ngx_http_geo_module.html#geo

仅使用您的 IP 地址示例的草图:

geo $authentication {
default "Authentication required";
198.51.100.1 "off";
198.51.100.2 "off";
198.51.100.3 "on";
...
}

server { ... location / { satisfy any;

# basic auth referencing to geo with $authentication auth_basic $authentication; auth_basic_user_file /etc/nginx/.htpasswd; # whitelist for the inital ip address restrictions include /etc/nginx/conf.d/ip-whitelist.conf.include; deny all; }}

相关内容