Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:apache_http_server_centos_6_-_mod_bw_-_bandbreitenbeschraenkung

Apache HTTP Server CentOS 6 - mod_bw - Bandbreitenbeschränkung

Das mod_cbw ist ein Apache HTTP Server 2 Modul, welches das Problem der Bandbreitenbeschränkung, das Limitieren von gleichzeitig agierenden Benutzers und ebenfalls das Beschränken der Bandbreite einzelner „virtueller Hosts“ zu lösen vermag. Die aktuelle Version kann Bandbreitenbeschränkungen für „virtuelle Hosts“ und gleichzeitig agierende Benutzer realisieren, die maximale Download-Geschwindigkeit limitieren, die Anzahl der Anfragen pro Sekunde einschränken und die maximale Anzahl gleichzeitiger IP-Verbindungen (wie bei 'mod_limitipconn') regeln.

Installation

Die Installation kann aus einem Dritt-Repository, wie z.B. EPEL erfolgen. Wie EPEL eingebunden werden kann, ist unter nachfolgendem internen Link beschrieben:

Zur Installation kann nachfolgender Befehl ausgeführt werden:

# yum install mod_bw
Loaded plugins: priorities
1263 packages excluded due to repository priority protections
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package mod_bw.x86_64 0:0.8-4.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package           Arch              Version              Repository       Size
================================================================================
Installing:
 mod_bw            x86_64            0.8-4.el6            epel             24 k

Transaction Summary
================================================================================
Install       1 Package(s)

Total download size: 24 k
Installed size: 58 k
Is this ok [y/N]: y
Downloading Packages:
mod_bw-0.8-4.el6.x86_64.rpm                              |  24 kB     00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : mod_bw-0.8-4.el6.x86_64                                      1/1
  Verifying  : mod_bw-0.8-4.el6.x86_64                                      1/1

Installed:
  mod_bw.x86_64 0:0.8-4.el6

Complete!

Der Inhalt des installierten rpm-Pakets mod_bw, kann mit nachfolgendem Befehl aufgelistet werden:

# rpm -qil mod_bw
Name        : mod_bw                       Relocations: (not relocatable)
Version     : 0.8                               Vendor: Fedora Project
Release     : 4.el6                         Build Date: Wed 14 Mar 2012 10:52:09 AM CET
Install Date: Fri 08 Mar 2013 02:13:29 PM CET      Build Host: x86-14.phx2.fedoraproject.org
Group       : System Environment/Daemons    Source RPM: mod_bw-0.8-4.el6.src.rpm
Size        : 59571                            License: ASL 2.0
Signature   : RSA/8, Thu 15 Mar 2012 06:55:26 PM CET, Key ID 3b49df2a0608b895
Packager    : Fedora Project
URL         : http://www.ivn.cl/apache
Summary     : Bandwidth Limiter For Apache
Description :
mod_bw is a bandwidth administration module for Apache httpd 2.x

* Restricts the number of simultaneous connections per vhost/dir
* Limits the bandwidth for files on vhost/dir
/etc/httpd/conf.d/mod_bw.conf
/usr/lib64/httpd/modules/mod_bw.so
/usr/share/doc/mod_bw-0.8
/usr/share/doc/mod_bw-0.8/ChangeLog
/usr/share/doc/mod_bw-0.8/LICENSE
/usr/share/doc/mod_bw-0.8/TODO
/usr/share/doc/mod_bw-0.8/mod_bw.txt

Konfiguration

Standardmäßig liefert mod_bw nachfolgende Konfigurationsdatei im Verzeichnis

  • /etc/httpd/conf.d/mod_bw.conf

mit nachfolgendem Inhalt mit:

<IfDefine HAVE_BW>
  <IfModule !mod_bw.c>
    LoadModule bw_module    extramodules/mod_bw.so
  </IfModule>
</IfDefine>

<IfModule mod_bw.c>

# You need to set this to On, for the mod to work.. By default, the mod is
# disabled, and wont limit anything.
#
# Example :
#           BandWidthModule On
#
# BandWidthModule [On|Off]

BandWidthModule On

# When enabled (disabled by default) the log will output lots of data to the
# error log. This data is for debugging purposes, and is usually not needed.
# If you are curious, you can enable. Please note, that this will make your
# logs grow a LOT.
#
# Example :
#           BandWidthDebug On
#
# BandWidthDebug [On|Off]

# By default, the mod will catch every request. This was done because it is
# easier to configure.
# if you disable it, you will have to add the output filter by hand. This is
# useful is you want only some request being processed by bw_mod.
#
# Example :
#           ForceBandWidthModule Off
#           AddOutputFilterByType BW_MOD text/html text/plain
#
# ForceBandWidthModule [On|Off]

# This takes 2 parameters. From is the origin of the connections. It could
# be a full host, part of a domain, an ip address, a network mask (i.e
# 192.168.0.0/24 or 192.168.0.0/255.255.255.0) or all.
# The second parameter indicates the total speed available to the Origin.
# If speed is 0, there is no limit.
#
# Example :
#         BandWidth localhost 10240
#         BandWidth 192.168.218.5 0
#
#         ( Order is relevant. First entries have precedence )
#
# BandWidth [From] [bytes/s]

# This takes 2 parameters. From is the origin of the connections. It could
# be a full host, part of a domain, an ip address, a network mask (i.e
# 192.168.0.0/24 or 192.168.0.0/255.255.255.0) or all.
# The second parameter indicates the minimun speed each client will have.
# What does this mean ? If you have a total of 100kbytes speed, and you put
# MinBandWidth at 50kbytes, it doesnt matter how many clients you have, all
# of them will have at minimun 50kbytes of total speed to download.
# If speed is 0, you will be using the default minimun (256 bytes/s).
# There is a special value of -1. This value means that each client, will
# have a top speed determined by the BandWidth directive. See the examples.
#
# Examples :
#
# Examples :
#           BandWidth    all 102400
#           MinBandWidth all 50000
#
#          The example above, will have a top speed of 100kb for the 1°
#         client. If more clients come, it will be splitted accordingly but
#         everyone will have at least 50kb (even if you have 50 clients)
#
#           BandWidth    all 50000
#           MinBandWidth all -1
#
#          This example, makes everyone have 50kb as top speed.
#
# MinBandWidth [From] [bytes/s]

# Type, is the last part of a file, or * for all. You can use .tgz to match
# only tar-compressed files, .avi to match video files, or * to match all.
# Minimum Size, is the size (in kbytes) of the file, to be matched. That way
# you can match huge video files that hog your bandwidth.
# The last parameter... is obvious. The speed allowed.
#
# Example :
#          LargeFileLimit .avi 500 10240
#
#          This limits .avi files over (or equal to) 500kb to 10kbytes/s
#
# LargeFileLimit [Type] [Minimum Size] [bytes/s]

# Probably you never need to touch this. It defaults to 8192 which is good
# for almost any speed.
# It must be a size between 1024 and 131072. A Small packet will cause the
# top speed to be lower, and the mod using more time splitting. If you use
# a Size too big, the mod will adjust it to lower speeds.
#
# BandWidthPacket [Size]

# This directives is useful to deliver a personalized error code.
# At default, when maxconnections is reached, the mod will issue a 503
# HTTP_SERVICE_UNAVAILABLE code. For some users, it is annoying to have an
# error message, and dont knowing why. You could use an ErrorDocument to
# point error 503 to a page explaining that you are under a heavy load of
# connections, but sometimes 503 isn't issued by the mod.
# So, with this directive, you can set the error code to return when
# maxconnections is reached. You can use any error code between 300 and 599.
# Please note, that some of the error codes are already used, so before using
# any number, take a look to a list of the codes (search for http error codes
# in google).
# When testing, i've used the error code 510, which hasn't been defined yet.
#
# And Example, with Personalized Error Page :
#
#   ErrorDocument 510 /errors/maxconexceeded.html
#   BandWidthError 510
#
# Note : Sometimes, the personalized page didn't appear. I'm not sure, but
#       in many cases, it got fixed, by making the page size over 1024bytes.
#        Anyways, if you need help using ErrorDocument, refer to the apache
#       Documentation.
#
# BandWidthError [Error]

# This takes 2 parameters. From is the origin of the connections. It could
# be a full host, part of a domain, an ip address, a network mask (i.e
# 192.168.0.0/24 or 192.168.0.0/255.255.255.0) or all.
# be a full host, part of a domain, an ip address, a network mask (i.e
# 192.168.0.0/24 or 192.168.0.0/255.255.255.0) or all.
# The second parameter, is the max connections allowed from the origin. Any
# connection over Max, will get a 503 Service Temporarily Unavailable
#
# There is a catch. You NEED to have a BandWidth limit for the same origin.
# It doesnt need to be a low limit. You can use an unlimited setting.
# You might wonder why. It's because im using them same memory space of the
# bandwidth limit, to count the connections, so i can save memory space.
# If you dont put a BandWidth using the same origin, MaxConnections will be
# ignored.
#
# Example :
#           BandWidth all 0
#           MaxConnection all 20
# or
#           BandWidth all 0
#           BandWidth 192.168.0.0/24 10240
#           MaxConnection all 20
#           MaxConnection 192.168.0.0/24 5
#
#
# Please, rememeber that every speed, will depend mostly on your connection.
# You cant get more speed if you dont have it.
#
# Remember also.. if you dont follow the instructions, and get some weird
# results, recheck your config before sending me an email.
#
# MaxConnection [From] [Max]

# <VirtualHost *>
#     BandWidthModule On
#     BandWidth all 16384
#     LargeFileLimit * 500 4096
#       <Directory />
#           LargeFileLimit * 100 1024
#       </Directory>
# </VirtualHost>
#
# This wont limit Directory / to 16384. The Directory wont "inherit" the
# settings from the vhost if you use some of the mod's directives.

</IfModule>

# VirtualHost example with bandwidth limitation:
# For more information, look at bw_mod documentation.
# In this example, we restrict the bandwidth to 10kb
# for the connections coming from localhost.
# And we set the bandwidth unlimited for any other
# connections.
# We set maximum amount of concurrent connections as 40.
# When the bandwidth is exceeded, the visitors see the
# personalized error code no 510.
#
#<VirtualHost *>
#    ServerAdmin webmaster@dummy-host.example.com
#    DocumentRoot /www/docs/dummy-host.example.com
#    ServerName dummy-host.example.com
#    ErrorLog logs/dummy-host.example.com-error_log
#    CustomLog logs/dummy-host.example.com-access_log common
#    <IfModule mod_bw.c>
#        BandWidthModule On
#        BandWidthDebug Off
#        BandWidth localhost 10240
#        BandWidth all 0
#        BandWidth localhost 10240
#        BandWidth all 0
#        MaxConnection all 40
#        BandWidthError 510
#    </IfModule>
#</VirtualHost>

Beispielkonfiguration

Beispielkonfiguration: VHost

Es soll die Bandbreite für den virtuelle Host auf 100 kByte beschränkt werden:

:!: HINWEIS - 1 MegaBit/s = 1000 KiloBit/s = 125 KiloByte/s

...
<IfModule mod_bw.c>
    BandWidthModule On
    BandWidthDebug Off
    ForceBandWidthModule On
    BandWidth all 102400
    # MinBandWidth [From] [bytes/s]
    # LargeFileLimit [Type] [Minimum Size] [bytes/s]
    # BandWidthPacket [Size]    
    # BandWidthError [Error]
    # MaxConnection [From] [Max]    
</IfModule>
...

Neustart Apache HTTP Server

Ein erneuter oder erster Start des Apache HTTP Server mit folgenden Befehl für eine erstmaligen Start

# service httpd start
oder einen erneuten Start des Apache HTTP Server mit folgendem Befehl
# service httpd restart
macht die oben beschriebenen Konfigurationen für den Apache HTTP Server wirksam.

Cookies helfen bei der Bereitstellung von Inhalten. Durch die Nutzung dieser Seiten erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Rechner gespeichert werden. Weitere Information
tachtler/apache_http_server_centos_6_-_mod_bw_-_bandbreitenbeschraenkung.txt · Zuletzt geändert: 2014/11/30 08:30 von klaus