In diesem Artikel erkläre ich, wie man mit Linux, dem apache2 Webserver und IPTables basierend auf der Quell IP verschiedene mod_jk Worker anspricht.
Dazu definieren wir im apache2 Webserver verschiedene virtuelle Hosts und verändern mit IPTables die Zielports der jeweiligen Requests
Eine Erklärung, was mod_jk worker sind und wie sie eingerichtet werden, findet ihr unter folgendem Link Tomcat hinter apache2 Webserver
Konfiguration des Webservers
Das prinzipielle Vorgehen, um diese Anforderung umzusetzen, ist, das wir verschiedene virtualhosts auf verschiedenen Ports definieren und über IPTables Zugriffe von bestimmten IP Adressen auf bestimmte Ports umleiten.
Listen 80
Listen 1234
Listen 443
Listen 443
Die Zeile
Listen 1234
muss der Datei hinzugefügt werden.
Als nächstes erstellen wir eine Datei unter /etc/apache2/sites-available und bennenen sie z.B. als loadbalancer.
ServerAdmin webmaster@localhost
JkMount /PATH/* MODJKWORKER1
ServerAdmin webmaster@localhost
JkMount /PATH/* MODJKWORKER2
Damit haben wir 2 virtuelle Hosts definiert, der eine läuft auf Port 80, der andere auf Port 1234. Zugriffe über Port 80 werde an den MODJKWORKER1 geleitet, Zugriffe über Port 1234 werden an den MODJKWORKER2 geleitet.
Konfiguration der Firewall Regeln mit IPTables
Jetzt müssen wir noch per IPTables die Regeln erstellen, damit Zugriffe von bestimmten IP’s/NET’s auf den Port 1234 umgeleitet werden.
Für eine IP folgenden Befehl ausführen
iptables -A PREROUTING -t nat -p tcp -s 1.2.3.4 --dport 80 -j DNAT --to-destination :1234
oder ein Netz, entsprechend seiner Netzmaske. Heise.de – Netzmasken berechnen
iptables -A PREROUTING -t nat -p tcp -s 1.2.2.0/24 --dport 80 -j DNAT --to-destination :1234
Damit wird der Zugriff von der IP 1.2.3.4 und die Zugriffe aus dem Netz 1.2.2.0/255.255.255.0 an den 2. virtuellen Host geleitet, der sie an den entprechenden Worker weiterleitet. Alle anderen Zugriffe gehen über den ersten virtuellen Host.