Nginx:跳过基于IP或请求头的HTTP基本身份验证
Nginx:跳过基于IP或请求头的HTTP基本身份验证,nginx,Nginx,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 "
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";
}
然而,developmentexceptions变量的设置是相互竞争的,因此当应用第二个代码时,第一个代码停止执行任何操作
如何将这两种策略结合起来?在这种情况下,可能无法更改
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";
}
现在,如果您想使用或条件,则可以执行以下操作
map $development_exceptions_agent$development_exceptions_geo $development_exceptions {
~off "off";
default "Not allowed.";
}
map $development_exceptions_agent$development_exceptions_geo $development_exceptions {
~offoff "off";
default "Not allowed.";
}
如果需要和条件,则可以执行以下操作
map $development_exceptions_agent$development_exceptions_geo $development_exceptions {
~off "off";
default "Not allowed.";
}
map $development_exceptions_agent$development_exceptions_geo $development_exceptions {
~offoff "off";
default "Not allowed.";
}
因此,您需要一个解决方案,而不希望更改控制发生什么的nginx.conf
?主机上的结构设置为可以控制include,但不能控制nginx.conf
。如果唯一的方法是通过nginx.conf
,那么我也对该解决方案感兴趣,因为我可以提出请求。您发布的部分是否可以编辑以编制解决方案?这些都是include的一部分还是直接在nginx.conf中?它们可以以任何方式进行编辑,它们都是include的一部分,而不是直接在nginx.conf中。您的“or”代码读起来像xor。对的我会试试你的解决方案,然后再给你回复。我看错了。您的~off
是一个正则表达式,与任何“off”匹配。谢谢你的帮助。