Я пытаюсь настроить белый список браузеров, которым разрешено посещать статический веб-сайт, размещенный на сервере nginx.
Я нашел в документация ссылка на modern_browser
директива.
Это кажется интересным, но у меня остались вопросы: - Как определить браузер Chrome? (допустим, я хочу обнаружить Chrome 60 и Safari 11) - Как я могу узнать, мобильный это Chrome или Safari?
Директивы modern_browser * не просто ужасно устарели для сегодняшних практических целей, они больше не нужны сегодня. Вы можете просто сопоставить актуальные теперь браузеры на карте регулярных выражений.
Предполагая, что вы делаете это прямо сейчас:
modern_browser_value "modern.";
ancient_browser_value "unpatched.";
modern_browser gecko 60;
index index.${modern_browser}html index.${ancient_browser}html index.html;
Следующее выполняет аналогичное сопоставление, но позволяет более детально управлять:
map $http_user_agent $browser_prefix {
"~Mozilla/5.0 \(.+ rv:[6789][0-9]\.[0-9.]*\).* Firefox/[0-9.]*$" "modern."
"~Mozilla/5.0 \(Android" "unpatched.";
default "unpatched.";
}
index index.${browser_prefix}html index.html;
Вы можете использовать полученный $variable
таким же образом, включая прямой отказ в доступе, например
if ($browser_prefix = "unpatched.") {return 403;}
Поскольку в вашем вопросе упоминается белый список, вот список причин люди используют обнаружение браузера, когда они не должны этого делать: