还有一种是用nginx的来判断
if ($http_user_agent ~* (mobile|nokia|iphone|ipad|Android|samsung|htc|blackberry)) {
// 添加你需要处理的语句,比如rewrite等
}
可能一些设备可能没有识别的,大家可以看分析日志,然后把 User-Agent的关键字写到if里面~
nginx的配置文件if语句是不支持“并且”和“或者”这样的多重条件判断的。在一些情况下,我们又需要if语句进行多个条件的判断,那么如何来实现呢?我们可以利用nginx的set语句设置变量的方法来解决。
假设我们需要对 /123/ 路径进行rewrite,但同时要排除 /123/images/ 路径不对该路径进行rewrite,可以采用下面的解决办法:
set $doRewrite "0";
if ($request_uri ~ ^/123/) {
set $doRewrite "1";
}
if ($request_uri ~ ^/123/images/) {
set $doRewrite "0";
}
if ($doRewrite = "1") {
// do rewrite
}
还有一个实例
这个意思是 判断真是的ip,然后根据ip做一些操作~ 这里用的map映射
map $http_x_forwarded_for $deny_access {
default 0;
1.2.3.4 1;
1.2.3.5 1;
1.2.3.6 1;
}
if ($deny_access = 1) {
return 403;
}
防盗链的一些个配置
location ~* \.(gif|png|jpg|bmp|swf|flv)$ {
valid_referers none blocked ruifengyun.com;
if ($invalid_referer) {
return 403;
}
}
以上的例子可以实现扩展名为 gif,png,jpg,bmp,swf,flv的url防止被盗链。如果你需要其它的url防止被盗链,添加相应的后缀即可。
也可以 把return 403 替换成 #rewrite ^/ ; 这样可以用另一种方法推广自己的网站
nginx的限速的规则
配置简单,只需3行
http{
……
limit_zone one $binary_remote_addr 10m;
……
server {
location / {
……
limit_conn one 2;
limit_rate 40k;
}
}
}
意思是:limit_zone针对每个IP定义一个存储session状态的容器。这个示例中定义了一个名叫one的10m大小的容器,这个名字会在后面的limit_conn中使用。limit_conn指定每个访客只能建立两条链接,limit_rate限制每条链接的速度不超过40K。所以,以上配置限制用户访问此站点总速度上限为80K。