How do I block a http user agent or a software agent using Nginx web server under Linux or Unix like operating systems?
You can block any http user agents with GET / POST requests that scrape your content or try to exploit software vulnerability. Use the following syntax. Edit /usr/local/nginx/conf/nginx.conf file, enter:
# vi /usr/local/nginx/conf/nginx.conf
In this example, block http user agent called wget:
## Block http user agent - wget ## if ($http_user_agent ~* (Wget) ) { return 403; } ## Block Software download user agents ## if ($http_user_agent ~* LWP::Simple|BBBike|wget) { return 403; }
Save and close the file. Reload nginx web server, enter:
# service nginx reload
OR
# /usr/local/nginx/sbin/nginx -s reload
How do I block multiple http user agents?
Use the following syntax:
if ($http_user_agent ~ (agent1|agent2|Foo|Wget|Catall Spider|AcoiRobot) ) { return 403; }
Case insensitive blocking: ~* vs ~
Please note the ~* makes it case insensitive as opposed to just a ~:
### case sensitive http user agent blocking ### if ($http_user_agent ~ (Catall Spider|AcoiRobot) ) { return 403; } ### case insensitive http user agent blocking ### if ($http_user_agent ~* (foo|bar) ) { return 403; }
See also:
- 30 Handy Bash Shell Aliases For Linux / Unix / Mac OS X
- Top 30 Nmap Command Examples For Sys/Network Admins
- 25 PHP Security Best Practices For Sys Admins
- 20 Linux System Monitoring Tools Every SysAdmin Should Know
- 20 Linux Server Hardening Security Tips
- Linux: 20 Iptables Examples For New SysAdmins
- Top 20 OpenSSH Server Best Security Practices
- Top 20 Nginx WebServer Best Security Practices
- 20 Examples: Make Sure Unix / Linux Configuration Files Are Free From Syntax Errors
- 15 Greatest Open Source Terminal Applications Of 2012

- My 10 UNIX Command Line Mistakes
- Top 10 Open Source Web-Based Project Management Software
- Top 5 Email Client For Linux, Mac OS X, and Windows Users
- The Novice Guide To Buying A Linux Laptop













{ 2 comments… read them below or add one }
How do you put another condition instead of return? can you deny all and only allow a certain ip/subnet with those user agents to go through?
How do you put another condition instead of return? can you deny all and only allow a certain ip/subnet with those user agents to go through? any example?