Learn to Limit Download Speed Per IP on NginX easily. You can now
throttle Speed / Bandwidth on IP Level in Nginx regardless number of
connections/requests.
We know today download manager make a lot of connections while downloading a file. So even if we restrict number of connection that would impact user’s downloads. So we had to find a way to limit overall download speed of files from Nginx regardless on number of connections. Our issues were solved once we came to a Nginx module written By Simon Lee on GitHub which could easily do this magic. I have written this tutorial for newbies who are unable to install this traffic throttling module in Nginx.
Limit Download Speed Per IP on NginX – Overview
Previously our dedicated servers were on Apache. We had CBand module on Apache which was able to limit users download speed on IP level. But after Migration to NginX web server, we were in search of alternative of CBand for Nginx. Initially we couldn’t find a way to throttle speed on IP basis. Because the nginx default Limit rate couldn’t server the purpose. it only had two options. Either we could limit connections which an IP make. Or we could limit each connection speed.We know today download manager make a lot of connections while downloading a file. So even if we restrict number of connection that would impact user’s downloads. So we had to find a way to limit overall download speed of files from Nginx regardless on number of connections. Our issues were solved once we came to a Nginx module written By Simon Lee on GitHub which could easily do this magic. I have written this tutorial for newbies who are unable to install this traffic throttling module in Nginx.
Steps to Limit Download Speed Per IP in NginX
Below is step by step tutorial to restrict Nginx download speed per IP. If you have already installed NginX then you can skip initial steps of NginX installations.Step # 1 Install Pre-Requisites Before NginX Source Compilation
You can Download All Commands from bottom button. Don’t worry if you can’t copy.sudo apt-get install build-essential zlib1g-dev libpcre3 libpcre3-dev
Step # 2 Download NginX Source and IP Speed Limiter Module
cd /root/
mkdir src
cd src/
wget http://nginx.org/download/nginx-1.4.4.tar.gz
tar -xvzf nginx-1.4.4.tar.gz
wget https://github.com/bigplum/Nginx-limit-traffic-rate-module/archive/master.zip
unzip master.zip
Step # 3 Compile NginX Source and Configure Module Path
./configure --prefix=/opt/nginx --user=www-data --group=www-data --without-http_scgi_module --without-http_uwsgi_module --without-http_fastcgi_module --add-module=/root/src/Nginx-limit-traffic-rate-module-master --with-http_stub_status_module --with-file-aio
Step # 4 Installing NginX
make
sudo make install
Step # 5 Edit Init File To Add NginX in Service and AutoStart in Startup
Edit Below File and Paste the content listed below:-vi /etc/init/nginx.conf
# nginx description "nginx http daemon" author "Philipp Klose <me@'thisdomain'.de>" start on (filesystem and net-device-up IFACE=lo) stop on runlevel [!2345] env DAEMON=/opt/nginx/sbin/nginx env PID=/opt/nginx/logs/nginx.pid expect fork respawn respawn limit 10 5 #oom never pre-start script $DAEMON -t if [ $? -ne 0 ] then exit $? fi end script exec $DAEMONPress Escape and :wq to write changes.
Step # 6 Edit NginX Configuration File to Limit Speed Per IP
Add below two lines in http sectionlimit_traffic_rate_zone rate $remote_addr 500m; limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m;The bold figure is the overall server speed. For example if server has 800 MB upload speed in total then edit it to 800m. Then under Server Section Add Following Line. This will limit connections Per IP. You can skip it if you don’t want to Limit connections per IP. But it is good to prevent DDOS Attack.
limit_conn conn_limit_per_ip 56;Then Add Location section Inside Server Section like below example: If you want to Limit speed to 2 MB per IP then edit it as below. Or if you want to limit NginX speed to 5 MB per IP then change it to 5120K.
location /directory_example/ { limit_traffic_rate rate 2048k; }
Step # 7 Restarting NginX to Apply Changes
Now Save Nginx.conf File and Restart NginX with below commands.service nginx stop
service nginx startLet me know if you hit any issues while throttling Speed Per IP basis in Nginx.
0 comments:
Post a Comment