How to limit connection bandwidth on Apache
Apache, by default, will serve files to the users as fast as the bandwidth or TCP/IP allows. In an environment where you are hosting files for download, and you don't want a single user to hog your server's bandwidth, you might want to throttle the download speed for your users. It allows your server to serve more users at a time.
You can limit the download speed of your Apache users by using mod_ratelimit. You have the option to specify the desired speed for each Location or VirtualHost configuration.
Steps to throttle download speed on Apache:
-
Launch your preferred terminal application.
-
Enable ratelimit module for Apache.
$ sudo a2enmod ratelimit # Ubuntu, Debian and SUSE Considering dependency env for ratelimit: Module env already enabled Enabling module ratelimit. To activate the new configuration, you need to run: systemctl restart apache2
Distribution with a2enmod support can simply run the command above without having to manually enable the required modules.
Options Debian, Ubuntu openSUSE and SLES Fedora Core, CentOS, RHEL macOS homebrew xampp a2enmod support yes yes no no no no Modules to install none Module name n/a ratelimit Loadmodule directive n/a LoadModule ratelimit_module <module_locations>/mod_ratelimit.so -
Add relevant options in Apache configuration file for a specific Location or VirtualHost configuration where you want the bandwidth to be limited.
<VirtualHost *:80> # ..... # .... SetOutputFilter RATE_LIMIT SetEnv rate-limit 512 SetEnv rate-initial-burst 1024 </VirtualHost>
Documentation: Offcial documentation for mod_ratelimit
-
Restart Apache service for the changes to take effect.
$ sudo systemctl restart apache2 # Ubuntu and Debian $ sudo systemctl restart httpd # CentOS and Red Hat
Related: How to manage Apache service
-
Download a file from the server to see if the bandwitdth is correctly limited.
$ curl --output image.iso onlineweb.tools/image.iso % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 3 512M 3 19.7M 0 0 538k 0 0:16:13 0:00:37 0:15:36 508k
Guide compatibility:
Operating System |
---|
Ubuntu 16.04 LTS (Xenial Xerus) |
Ubuntu 16.10 (Yakkety Yak) |
Ubuntu 17.04 (Zesty Zapus) |
Ubuntu 17.10 (Artful Aardvark) |
Ubuntu 18.04 LTS (Bionic Beaver) |
Ubuntu 18.10 (Cosmic Cuttlefish) |
Ubuntu 19.04 (Disco Dingo) |