Nginx:根据IP或请求标头跳过HTTP基本身份验证

时间:2017-10-03 13:45:28

标签: nginx

http中的nginx.conf块包含以下内容:

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

1 个答案:

答案 0 :(得分:1)

然后你应该尝试以下方法

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.";
}