Possibly map uses a hashing scheme to do the matches, so it could be more 
efficient than a series of ifs. That is something the programmers would know. 

Every situation is different. I don't find the maps I use to be detrimental, 
especially if you are preventing further operations by the nginx. I can tell 
you a trimmed about a third of my network traffic by aggressively blocking 
scrapers and other bots. There are real savings to be had. 

Returning a 404 to a bad referrer can improve your page rank as well as reduce 
network traffic. For instance, I 404 any referral from stumbleupon.com because 
I never found one to be relevant when I looked at the link. I have other 
referrals from knuckle head websites that I rather not be associated with, and 
a few that turned out to disseminate malware. One referral went to a terrorist 
website. Why they picked me, I don't know. The link was to nothing relevant.

Just do the code and watch the system load. I think you will find you concerns 
are not a problem.

If map bugs you, you probably wouldn't like my ipfw blocking of VPS, colos, 
hosting companies, etc. that have attempted to hack my website. I'm up to 14k 
CIDRs, but here again, you have to assume a table in IPFW is intelligently 
searched. The server today that you block for attempting to hack WordPress is 
likely to be used when the next zero day comes out. If the IP doesn't have 
eyeballs and it isn't the few bots you like (Google, etc.), block them.
  Original Message  
From: Anoop Alias
Sent: Saturday, September 24, 2016 2:39 AM
To: Nginx
Reply To: [email protected]
Subject: Re: performance hit in using too many if's

I understand that the map may look cleaner on the config as each vhost
don't need the if matchings ..but the variable evaluation and
therefore the pattern matching for all possible values is still
happening when the mapped variable in encountered? and therefore there
is still a huge performance penalty ?

I am mainly asking this..as the above type of security configs are
mostly not seen on nginx official blogs /documentation etc .
Just wanted to know if people who know the internals have purposefully
omitted these setting even though they are serving the purpose of
security.



On Sat, Sep 24, 2016 at 2:45 PM, <[email protected]> wrote:
> ‎I suspect the map module can do that more efficiently. There is an example 
> of how to use the map module in this post:
>
> http://ask.xmodulo.com/block-specific-user-agents-nginx-web-server.html
>
> The code is certainly cleaner using map. I use three maps, specifically for 
> bad user agent, bad request, and bad referrer.
>
>
>
> Original Message
> From: Anoop Alias
> Sent: Saturday, September 24, 2016 1:58 AM
> To: Nginx
> Reply To: [email protected]
> Subject: performance hit in using too many if's
>
> Hi,
>
> I was following some suggestions on blocking user agents,sql
> injections etc as in the following URL
>
> https://www.howtoforge.com/nginx-how-to-block-exploits-sql-injections-file-injections-spam-user-agents-etc
>
> Just wanted to know what is the performance hit when using so many of
> these if's ( in light of the if-is-evil policy ). Especially if the
> server is having a lot of virtual hosts and the rules are matched for
> each of them.
>
> Is it like:
>
> If the server is capable (beefy) it should be able to handle these URL ?
>
> or
>
> There is a huge performance penalty .Significantly more than
> apache+mod_security as an example
>
> or
>
> The is a performance penalty but not as much as other security tools
> or WAF's like naxsi or mod_security
>
>
> Thanks in advance,
>
> --
> Anoop P Alias
>
> _______________________________________________
> nginx mailing list
> [email protected]
> http://mailman.nginx.org/mailman/listinfo/nginx
>
> _______________________________________________
> nginx mailing list
> [email protected]
> http://mailman.nginx.org/mailman/listinfo/nginx



-- 
Anoop P Alias

_______________________________________________
nginx mailing list
[email protected]
http://mailman.nginx.org/mailman/listinfo/nginx

_______________________________________________
nginx mailing list
[email protected]
http://mailman.nginx.org/mailman/listinfo/nginx

Reply via email to