Der Unterschied zwischen Apache und Tomcat und warum sie zusammenarbeiten müssen.
Datum der Veröffentlichung:
Aktualisiert:
Fachartikel > Der Unterschied zwischen Apache und Tomcat und warum sie zusammenarbeiten müssen.
Status 2026 und sichere Verwendung
Fazit: Apache HTTP Server ist ein universeller HTTP-Server und Reverse Proxy; Tomcat ist ein Java-Webcontainer mit eigenem HTTP-Connector. Beide können unabhängig voneinander betrieben werden. Eine Kombination ist sinnvoll, wenn der Proxy einen konkreten betrieblichen Nutzen bietet, etwa zentrale TLS-Konfiguration, Routing, Systemintegration oder eine gemeinsame Eingangsschicht.
Lernziele
- Welche Schicht HTTP-Bereitstellung, Proxying, Servlet-Ausführung, statische Dateien, TLS und Routing übernehmen kann.
- Wie
mod_proxy_httpoder ein anderer unterstützter Connector Anfragen an Tomcat weiterleitet. - Warum eine Proxy-Schicht nicht allein deshalb nötig ist, weil sie in älteren Architekturdiagrammen vorkommt.
Zielgruppe: Java-Webteams, die zwischen einer direkten Tomcat-Bereitstellung und einer verwalteten Reverse-Proxy-Architektur entscheiden.
Stand 2026: Eine Aufteilung nach Verantwortlichkeiten bleibt sinnvoll; die Aussage „Apache und Tomcat müssen zusammenarbeiten“ ist jedoch zu pauschal. Maßgeblich ist die kleinste Architektur, die Anforderungen an Sicherheit, Zuverlässigkeit, Routing, Observability und Betrieb erfüllt. Vertrauensgrenzen und weitergeleitete Header müssen dokumentiert werden.
Sicherheitshinweis: Die Befehle und Konfigurationsbeispiele im Originalartikel wurden nicht in einer aktuellen Produktionsumgebung erneut ausgeführt. Überprüfen Sie unterstützte Versionen, Backups, Zugriffskontrollen und Rollback-Schritte in einer separaten Testumgebung, bevor Sie sie anwenden.
Offizielle Primärquellen
Überblick
Apache HTTP Server und Tomcat überschneiden sich in einigen Funktionen. Dieser Artikel vergleicht ihre Rollen und erklärt, wann ein Connector oder Reverse Proxy sinnvoll ist.
Inhaltsübersicht
1. Warum Apache HTTP Server mit Tomcat einsetzen?
Die Produkte haben unterschiedliche Hauptaufgaben. Apache HTTP Server liefert HTTP-Inhalte aus und kann als Reverse Proxy arbeiten. Tomcat führt Java-Servlet- und JSP-Anwendungen aus. Eine Installation kann nur eines der Produkte verwenden oder beide kombinieren, wenn eine getrennte Proxy-Schicht einen klaren Nutzen bringt.
Tomcat besitzt einen eigenen HTTP-Connector; Apache HTTP Server ist daher keine Voraussetzung. Typische Gründe für eine vorgeschaltete Instanz sind zentrale TLS-Konfiguration, Virtual-Host-Routing, Zugriffskontrollen, die Bereitstellung statischer Dateien und die Anbindung an eine vorhandene Web-Eingangsschicht.
1-1. Verantwortlichkeiten aufteilen
Als Vergleich eignet sich das Verhältnis zwischen Anwendungsserver und Datenbank. Eine Anwendung kann kleine Datenmengen in Dateien speichern. Eine Datenbank wird eingesetzt, wenn ihre Abfrage-, Konsistenz- und Verwaltungsfunktionen einen Mehrwert bieten. Ebenso kann Tomcat HTTP direkt bereitstellen; ein separater HTTP-Server lohnt sich nur, wenn dessen Proxy- und Edge-Funktionen den Betrieb vereinfachen.
Das ist eine Architekturentscheidung und keine allgemeingültige Liste von Vor- und Nachteilen. Vor einer zusätzlichen Schicht sind benötigte Funktionen, Fehlerszenarien, Wartungsaufwand und Vertrauensgrenzen zu bewerten.
1-2. Aufgabe von Apache HTTP Server
Apache HTTP Server nimmt HTTP-Anfragen entgegen und beantwortet sie selbst oder leitet sie an einen anderen Dienst weiter. Module stellen unter anderem folgende Funktionen bereit:
- Anfragen anhand von Adressen oder anderen Merkmalen zulassen oder ablehnen,
- ausgewählte URLs umleiten oder umschreiben,
- TLS-Verbindungen terminieren,
- statische Inhalte ausliefern sowie
- Anfragen an Anwendungsserver routen oder weiterleiten.
Auch Apache kann mit passenden Modulen und Anwendungen dynamische Antworten erzeugen. Die Grenze zwischen den Produkten sollte den betrieblichen Anforderungen folgen und nicht der pauschalen Regel, statische Inhalte müssten von Apache und dynamische Inhalte von Tomcat stammen.
1-3. Aufgabe von Tomcat
Apache Tomcat ist ein Servlet-Container und Java-Webserver. Er nimmt eine Anfrage entgegen, führt die zugeordnete Java-Webanwendung aus und sendet deren Antwort zurück. Typische Aufgaben einer Anwendung sind:
- Anfragedaten validieren und Anwendungsdaten speichern,
- dynamische Seiten oder API-Antworten erzeugen sowie
- Benutzer authentifizieren und benutzerspezifische Logik anwenden.
Tomcat kann außerdem statische Dateien ausliefern. Bei kleinen Installationen ist es oft am einfachsten, sie in der Anwendung zu belassen. Eine getrennte Web- oder CDN-Schicht sollte ein konkretes Betriebsproblem lösen.
2. Funktionen von Apache HTTP Server
Apache stellt viele Funktionen über Module bereit. Nach dem Laden und Konfigurieren eines Moduls steht dessen Funktion zur Verfügung. Die folgende Liste nennt die relevanten Module.
2-1. Anfragen parallel verarbeiten
Apache verwendet ein Multi-Processing Module (MPM), beispielsweise mpm_prefork, mpm_worker oder mpm_event. Die MPMs nutzen unterschiedliche Prozess- und Threadmodelle und sind nicht in jeder Installation austauschbar.
Das folgende historische prefork-Beispiel legt Grenzen für den Prozesspool fest:
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxRequestWorkers 250
MaxConnectionsPerChild 0
</IfModule>
StartServers 5 erzeugt beim Start fünf Kindprozesse. MaxRequestWorkers 250 begrenzt die Zahl gleichzeitig bearbeiteter Anfragen. Die übrigen Direktiven steuern Leerlaufprozesse und Prozessrecycling. Geeignete Werte müssen anhand von Arbeitsspeicher und Lastprofil geprüft werden.
2-2. URLs umschreiben
mod_rewrite kann URLs umformen oder umleiten. Dieses Beispiel leitet eine HTTP-Anfrage auf die entsprechende HTTPS-URL um:
<IfModule rewrite_module>
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
Der Server sendet eine permanente Weiterleitung; der Client stellt anschließend eine neue HTTPS-Anfrage. Hinter einem weiteren Proxy oder Load Balancer müssen zuvor die weitergeleiteten Header geprüft werden.
2-3. Zugriff anhand der IP-Adresse steuern
Die folgende historische Konfiguration erlaubt nur die drei aufgeführten Netzbereiche:
<Directory />
order deny,allow
deny from all
allow from 1.0.16.0/20
allow from 1.0.64.0/18
allow from 1.1.64.0/18
</Directory>
Order, Deny und Allow gehören zur Apache-2.2-Kompatibilitätssyntax. Neue Apache-2.4-Konfigurationen sollten in der Regel Require ip verwenden. Vor der Übernahme des Beispiels ist die aktuelle Dokumentation zur Zugriffskontrolle zu prüfen.
3. Funktionen von Tomcat
Tomcat führt Java-Webanwendungen aus und stellt sie über HTTP oder einen Connector zu einem Proxy bereit.
3-1. Dynamische Antworten mit Java
Eine bereitgestellte Anwendung kann Java-Bibliotheken für Aufgaben wie die folgenden verwenden:
- Antworten aus validierten Anfrageparametern erzeugen,
- strukturierte Anwendungsprotokolle schreiben,
- Tabellendateien erstellen oder bearbeiten und
- Metadaten von Archivdateien untersuchen.
Diese Java-Bibliotheken sind Anwendungsabhängigkeiten und keine Module von Apache HTTP Server. Tomcat stellt den Servlet-Container und die Laufzeitintegration für die Anwendung bereit.
4. Architekturüberlegungen
Apache HTTP Server und Apache Tomcat sind eigenständige Projekte der Apache Software Foundation. Obwohl beide HTTP sprechen, unterscheiden sie sich bei Laufzeit, Veröffentlichungszyklus, Konfiguration und Haupteinsatzgebiet.
Zu den integrierten Webserver-Funktionen von Tomcat gehören:
- TLS-Connectoren,
- Server Side Includes (SSI) und
- URL-Rewriting.
Eine direkte Tomcat-Bereitstellung kann deshalb angemessen sein. Apache HTTP Server sollte nur ergänzt werden, wenn dessen getrennte Proxy-, Routing-, Sicherheits- oder Betriebsfunktionen den zusätzlichen Aufwand rechtfertigen.
5. Zusammenfassung
Tomcat kann eine Java-Webanwendung ohne Apache HTTP Server bereitstellen. Beide Produkte sollten kombiniert werden, wenn eine dedizierte HTTP- und Reverse-Proxy-Schicht einen nachweisbaren Bedarf erfüllt. Andernfalls ist die einfachere direkte Architektur vorzuziehen.