Nginx配置网页只能指定浏览器访问,项目需求,网页只能在微信内置浏览器打开,非内置浏览器禁止打开。
2种思路:
1、Nginx判断UA只能微信打开,此方式无法避免伪造的UA。
location / {
if ( $http_user_agent !~ "MicroMessenger" ){
return 405;
}
}
2、使用微信内置的JS接口判断是否微信环境。
附:多条件判断指定mobile目录只能微信访问
location / {
set $flag 0;
if ( $uri ~ "/mobile/" ){
set $flag "${flag}1";
}
if ( $http_user_agent !~ "MicroMessenger" ){
set $flag "${flag}1";
}
if ($flag = "011"){
return 405;
}
}
3、Nginx禁止特定UA访问
在Nginx中有一个内置变量$http_user_agent,表示HTTP请求头中的User-Agent字段。使用正则表达式匹配User-Agent字段中是否包含特定的字符串,符合规则的则禁止访问。具体实现如下:
location / {
if ($http_user_agent ~* (python-requests|Apache-HttpClient)) {
return 403;
}
}