{"id":27594,"date":"2017-05-20T09:26:14","date_gmt":"2017-05-20T07:26:14","guid":{"rendered":"https:\/\/mamchenkov.net\/wordpress\/?p=27594"},"modified":"2017-05-20T09:26:14","modified_gmt":"2017-05-20T07:26:14","slug":"haproxy-and-nginx-abuse-and-rate-limiting","status":"publish","type":"post","link":"https:\/\/mamchenkov.net\/wordpress\/2017\/05\/20\/haproxy-and-nginx-abuse-and-rate-limiting\/","title":{"rendered":"HAProxy and Nginx abuse and rate limiting"},"content":{"rendered":"<!-- google_ad_section_start -->\n<p>My brother wrote a follow-up &#8211; <a href=\"http:\/\/alex.mamchenkov.net\/2017\/05\/17\/haproxy-abuse-filtering-rate-limiting\/\">HAProxy abuse filtering and rate limiting<\/a> &#8211; to his previous post &#8211;\u00a0<a href=\"http:\/\/alex.mamchenkov.net\/2017\/05\/17\/nginx-rate-limit-user-agent-control-bots\/\">Nginx rate limit by user agent (control bots)<\/a>. \u00a0This is just a tip of the iceberg that we are working with at <a href=\"https:\/\/www.qobo.biz\/\">the office<\/a>, but it&#8217;s pretty cool.<\/p>\n<p>Hopefully, soon enough our Ansible playbooks will be up to date and shareable&#8230;<\/p>\n<!-- google_ad_section_end -->\n","protected":false},"excerpt":{"rendered":"<!-- google_ad_section_start -->\n<p>My brother wrote a follow-up &#8211; HAProxy abuse filtering and rate limiting &#8211; to his previous post &#8211;\u00a0Nginx rate limit by user agent (control bots). \u00a0This is just a tip of the iceberg that we are working with at the office, but it&#8217;s pretty cool. Hopefully, soon enough our Ansible playbooks will be up to &hellip; <a href=\"https:\/\/mamchenkov.net\/wordpress\/2017\/05\/20\/haproxy-and-nginx-abuse-and-rate-limiting\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">HAProxy and Nginx abuse and rate limiting<\/span><\/a><\/p>\n<!-- google_ad_section_end -->\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"HAProxy and Nginx abuse and rate limiting #HAProxy #Nginx #HTTP #performance #security","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"_links_to":"","_links_to_target":""},"categories":[1,6,133,62,1334],"tags":[3400,3164,1057,200,2289],"keyring_services":[],"class_list":["post-27594","post","type-post","status-publish","format-standard","hentry","category-general","category-linux","category-sysadmin","category-technology","category-web-work","tag-haproxy","tag-nginx","tag-performance","tag-security","tag-web-hosting"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":25977,"url":"https:\/\/mamchenkov.net\/wordpress\/2016\/03\/29\/cipherli-st-strong-ciphers-for-apache-nginx-and-lighttpd\/","url_meta":{"origin":27594,"position":0},"title":"Cipherli.st &#8211; strong ciphers for Apache, Nginx and Lighttpd","author":"Leonid Mamchenkov","date":"March 29, 2016","format":false,"excerpt":"Cipherli.st - provides ready to use cipher configurations for a variety of applications, such as Apache, Nginx, Lighttpd, HAProxy, Exim, Postfix, Dovecot, OpenSSH, and others. \u00a0This is a huge time-saver for those of us not well versed in cryptography and security. Don't forget to use Qyalis SSL Labs SSL Server\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":27678,"url":"https:\/\/mamchenkov.net\/wordpress\/2017\/06\/13\/rate-limiting-with-nginx-and-nginx-plus\/","url_meta":{"origin":27594,"position":1},"title":"Rate Limiting with NGINX and NGINX Plus","author":"Leonid Mamchenkov","date":"June 13, 2017","format":false,"excerpt":"Nginx blog (which, if you work with Nginx in any capacity, you should subscribe to) has an excellent guide to rate limiting. \u00a0The article explains rate limiting from the basics, through bursts, all the way to more advanced examples, with multiple rate limits for the same location.","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":25049,"url":"https:\/\/mamchenkov.net\/wordpress\/2015\/12\/12\/how-far-can-you-go-with-haproxy-and-a-t2-micro\/","url_meta":{"origin":27594,"position":2},"title":"How Far Can You Go With HAProxy and a t2.micro","author":"Leonid Mamchenkov","date":"December 12, 2015","format":false,"excerpt":"Here's an interesting set of experiments trying to answer the question of how far can you go with HAProxy setup on the smallest of the Amazon EC2 instances - t2.micro (1 virtual CPU, 1 GB of RAM). \u00a0Here's the summary. At 460 req\/second response times are mostly a flat ~300\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"460 requests\/second","src":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2015\/12\/460loader-500x261.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":28815,"url":"https:\/\/mamchenkov.net\/wordpress\/2018\/09\/25\/instagram-importer-works-again\/","url_meta":{"origin":27594,"position":3},"title":"Instagram Importer works again!","author":"Leonid Mamchenkov","date":"September 25, 2018","format":false,"excerpt":"After some digging around and troubleshooting, I managed to fix the\u00a0DsgnWrks Instagram Importer WordPress plugin on my site.\u00a0 It turns out quite a few people had an issue with it, which started back in September\/October of last year (2017).\u00a0 The solution, they say, is just to remove the authenticated Instagram\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":27586,"url":"https:\/\/mamchenkov.net\/wordpress\/2017\/05\/14\/haproxy-sni\/","url_meta":{"origin":27594,"position":4},"title":"HAProxy SNI","author":"Leonid Mamchenkov","date":"May 14, 2017","format":false,"excerpt":"\"HAProxy SNI\" is pure gold! If you want to have a load balancer for HTTPS traffic, without managing SSL certificates on the said load balancer, there is a way to do so. The approach is utilizing the Server Name Indication (SNI) extension to the TLS protocol. \u00a0I knew about it\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":27440,"url":"https:\/\/mamchenkov.net\/wordpress\/2017\/03\/20\/nginx-amplify-comprehensive-nginx-monitoring\/","url_meta":{"origin":27594,"position":5},"title":"Nginx Amplify : comprehensive Nginx monitoring","author":"Leonid Mamchenkov","date":"March 20, 2017","format":false,"excerpt":"Somehow I missed the announcement of the Nginx Amplify (beta) back in November of last year, so here it goes now. Nginx Amplify is a new tool for the comprehensive monitoring of Nginx web servers. \u00a0Here's what it can do for you: Visually identify performance bottlenecks, overloaded servers, or potential\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2017\/03\/nginx-amplify-500x257.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]}],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/27594","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/comments?post=27594"}],"version-history":[{"count":0,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/27594\/revisions"}],"wp:attachment":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/media?parent=27594"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/categories?post=27594"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/tags?post=27594"},{"taxonomy":"keyring_services","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/keyring_services?post=27594"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}