根据请求的来源要求基本身份验证(使用地理模块按国家/地区过滤)
Requiring basic auth depending on the origin of the request (filtering by country with geo module)
有没有一种方法可以根据请求的来源要求基本身份验证,并按国家/地区过滤?我的目标是能够始终要求基本身份验证,除非请求来自 X、Y 或 Z 国家/地区。
此答案假设您已经安装并运行该模块,有大量好的安装指南,所以我将跳过它。
您可以将 geoIP 映射为:
geoip_country /path/to/GeoIP/GeoIP.dat;
map $geoip_country_code $not_auth_required {
default no;
ZZ yes;
YY yes;
XX yes;
}
然后为每个人设置基本身份验证,除了那些:
server {
listen 80;
root /foo/bar/baz;
auth_basic “Wrong Country";
auth_basic_user_file /etc/nginx/.htpasswd; #typical user:$hash auth.
if ($not_auth_require = yes) {
auth_basic off;
}
location / {
#do things
}
}
理论上这个逻辑应该可以解决问题,因为您需要的是白名单,而不是黑名单。我希望我帮助了
有没有一种方法可以根据请求的来源要求基本身份验证,并按国家/地区过滤?我的目标是能够始终要求基本身份验证,除非请求来自 X、Y 或 Z 国家/地区。
此答案假设您已经安装并运行该模块,有大量好的安装指南,所以我将跳过它。
您可以将 geoIP 映射为:
geoip_country /path/to/GeoIP/GeoIP.dat;
map $geoip_country_code $not_auth_required {
default no;
ZZ yes;
YY yes;
XX yes;
}
然后为每个人设置基本身份验证,除了那些:
server {
listen 80;
root /foo/bar/baz;
auth_basic “Wrong Country";
auth_basic_user_file /etc/nginx/.htpasswd; #typical user:$hash auth.
if ($not_auth_require = yes) {
auth_basic off;
}
location / {
#do things
}
}
理论上这个逻辑应该可以解决问题,因为您需要的是白名单,而不是黑名单。我希望我帮助了