nginx.conf
中的 http
块包含以下内容:
auth_basic $development_exceptions;
在随附的文件中,geo
模块用于设置变量:
geo $development_exceptions {
default "Not allowed.";
1.2.3.4 "off";
}
map
模块在同一文件中使用用户代理变量:
map $http_user_agent $development_exceptions {
default "Not allowed.";
~*(header-text) "off";
}
但是,开发异常变量的设置正在竞争,因此,当应用第二个代码时,第一个代码停止执行任何操作。
如何合并这两种策略?在这种情况下,可能无法更改nginx.conf
。
然后您应该尝试以下方法
geo $development_exceptions_geo {
default "Not allowed.";
1.2.3.4 "off";
}
map $http_user_agent $development_exceptions_agent {
default "Not allowed.";
~*(header-text) "off";
}
现在,如果要使用or
条件,则可以在下面进行
map $development_exceptions_agent$development_exceptions_geo $development_exceptions {
~off "off";
default "Not allowed.";
}
如果您想要and
条件,则可以在下面进行
map $development_exceptions_agent$development_exceptions_geo $development_exceptions {
~offoff "off";
default "Not allowed.";
}
我想结合'允许的ip列表'或'某些用户代理来绕过身份验证,工作:
geo $auth_geo {
default "Authentication required";
18.184.113.24 "off"; # pingdom
35.158.65.6 "off"; # pingdom
52.87.44.246 "off"; # url.thum.io
52.44.29.90 "off"; # url2.thum.io
}
map $http_user_agent $auth_agent {
default "Auth required";
"~PingdomPageSpeed" "off";
"~cutycapt" "off";
"~Chrome-Lighthouse" "off";
}
map $auth_geo$auth_agent $auth {
~off "off";
default "Not allowed.";
}
然后使用类似于:
location ~ .php$ {
auth_basic $auth;
auth_basic_user_file /etc/nginx/custom/website/htpasswd;
try_files $uri =404;
include fastcgi_params;
fastcgi_pass $phpupstream;
}
我不知道auth_basic_user
是否也可以是相关路径(?)。