Blocking by user agent if ip doesn't match
    António P. P. Almeida 
    appa at perusio.net
       
    Wed Jun  1 02:25:31 MSD 2011
    
    
  
On 31 Mai 2011 23h01 WEST, nginx-forum at nginx.us wrote:
> Thanks everyone for being so helpful. I've ended up applying Igor's
> suggestion.  But I've dropped this line as I wasn't sure what to do
> with it:
> "~(?i)(Purebot|Lipperhey|MaMaCaSpEr|libwww-perl|Mail.Ru|gold
> crawler)" 1;
>
> I am guessing it can be used if I want to match more then just
> google's user agent. But in any case what I did worked very nice.  I
> tested it using Firefox user agent and I got forbidden page, then
> tried adding my ip to geo bit and I was allowed.
Yes following Alexandr and Igor's advice you can create similar
variables using more IP blocks inside the geo directive. E.g.:
geo $bad_bot {
  default 1;
  66.0.0.0/8 0;
  xx.yy.zz.ww/16 1; # for Yahoo!
  (...)
}
You'll need also to add the regexes for User Agent string of the
remaining bots that you want to whitelist in the map directive.
map $http_user_agent $bots {
  default 0;
  ~(?i)(google|yahoo)  $bad_bot;
}
--- appa
    
    
More information about the nginx
mailing list