Разрешить только один User-Agent, остальные заблокировать в nginx?

новичок на этом сайте, поэтому буду краток:

В настоящее время у меня есть:

    if ($http_user_agent ~* (A-certain-self-made-User-Agent-here)) {
            return 200;
    }

Который работает очень хорошо. (Проверено переключением 200 на 403).

Мой вопрос: есть ли способ: /etc/nginx/sites-enabled/default разрешить только ОДИН пользовательский агент и запретить остальные?

Я знаю, это кажется глупым, но я хотел бы это сделать (если это возможно). Может быть, так?:

    if (http_user_agent ~*(user-agent)) {
           return 200;
    else
           return 403;
    }

person Neil Mcdonald    schedule 16.07.2013    source источник


Ответы (3)


Попробуй это:

if ($http_user_agent !~* (A-certain-self-made-User-Agent-here)) {
        return 403;
}

Это должно быть «не совпадение» для вашего определенного пользовательского агента. Справочная информация здесь: HttpRewriteModule

person ProfessionalAmateur    schedule 17.07.2013

if ($http_user_agent !~* "A-certain-self-made-User-Agent-here") {
    return 403;
}

работает на моем сайте.

person Vidyut    schedule 19.07.2013

Вы можете попробовать следующее в нужном месте

set $isallowed = "";
if ($http_user_agent = allowed_user_agent) {
    set $isallowed "${isallowed}YES";
}

if ($isallowed !~ YES) {
    rewrite ^ http://yourserver.com permanent;
}
person deagh    schedule 17.07.2013