Java Web Stack: Tomcat hinter Nginx/Apache betreiben

Tomcat ist ein weit verbreiteter Java-Servlet-Container, der Webanwendungen auf Basis von Java EE ausführt. Um Tomcat produktiv zu betreiben, empfiehlt es sich, einen Frontend-Webserver wie Nginx oder Apache als Reverse Proxy einzusetzen. Dies bietet Vorteile wie SSL-Terminierung, Load Balancing, Caching und Schutz vor direktem Zugriff auf Tomcat. In diesem Leitfaden erfahren Einsteiger, IT-Studierende und Junior Network Engineers, wie Tomcat hinter Nginx oder Apache sauber konfiguriert wird.

Voraussetzungen

  • Linux-Server (Ubuntu/Debian oder CentOS/RHEL)
  • Java (OpenJDK 11 oder neuer)
  • Apache Tomcat installiert
  • Nginx oder Apache HTTP Server als Frontend
  • Sudo- oder Root-Zugriff

Tomcat Installation und Konfiguration

Tomcat kann über Paketmanager oder manuell installiert werden. Beispiel für Ubuntu:

sudo apt update
sudo apt install tomcat9 tomcat9-admin tomcat9-common

Tomcat-Dienste prüfen:

sudo systemctl status tomcat9
sudo systemctl enable tomcat9

Tomcat Connector prüfen

Tomcat hört standardmäßig auf Port 8080 für HTTP und 8009 für AJP. Dies kann in server.xml angepasst werden:

sudo nano /etc/tomcat9/server.xml
# Beispiel AJP Connector
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

Nginx als Reverse Proxy für Tomcat

Nginx leitet HTTP/HTTPS-Anfragen an Tomcat weiter, oft über Port 8080.

sudo nano /etc/nginx/sites-available/tomcat
server {
    listen 80;
    server_name example.com www.example.com;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    access_log /var/log/nginx/tomcat_access.log;
    error_log /var/log/nginx/tomcat_error.log;
}
sudo ln -s /etc/nginx/sites-available/tomcat /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

Apache HTTP Server als Reverse Proxy

Mit mod_proxy kann Apache Anfragen an Tomcat weiterleiten.

sudo a2enmod proxy proxy_http
sudo nano /etc/apache2/sites-available/tomcat.conf
<VirtualHost *:80>
    ServerName example.com

    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:8080/
    ProxyPassReverse / http://127.0.0.1:8080/

    ErrorLog ${APACHE_LOG_DIR}/tomcat_error.log
    CustomLog ${APACHE_LOG_DIR}/tomcat_access.log combined
</VirtualHost>
sudo a2ensite tomcat
sudo apache2ctl configtest
sudo systemctl reload apache2

SSL/TLS Integration

Für HTTPS empfiehlt sich Let’s Encrypt für automatische Zertifikate.

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com
sudo systemctl reload nginx

Optimierungen für Tomcat hinter Reverse Proxy

  • Keep-Alive aktivieren
  • Proxy-Timeouts anpassen: Nginx proxy_read_timeout 120s;, Apache ProxyTimeout 120
  • MaxThreads in Tomcat server.xml anpassen
  • Separate Logs für Tomcat und Webserver führen
  • HTTP/2 unter Nginx für schnellere Verbindungen

Monitoring und Troubleshooting

sudo journalctl -u tomcat9 -f
tail -f /var/log/nginx/tomcat_error.log
tail -f /var/log/apache2/tomcat_error.log

Netzwerk und Subnetze

In Multi-Server-Setups ist saubere IP- und Subnetzplanung wichtig für Load Balancing und Firewall-Regeln.

IPv4 Subnetz

<math>
Server-IP = 192.168.230.10/24
Subnetzadresse = 192.168.230.10 & 255.255.255.0 = 192.168.230.0
Broadcastadresse = 192.168.230.0 | ~255.255.255.0 = 192.168.230.255
</math>

IPv6 Subnetz

<math>
Server-IP = 2001:db8:abcd:230::10/64
Subnetzadresse = 2001:db8:abcd:230:: & ffff:ffff:ffff:ffff:: = 2001:db8:abcd:230::0
Broadcastadresse = 2001:db8:abcd:230:ffff:ffff:ffff:ffff
</math>

Best Practices

  • Tomcat als eigenständigen Service laufen lassen
  • Reverse Proxy für SSL, Caching und Security verwenden
  • Keep-Alive, Timeouts und MaxThreads anpassen
  • Separate Logs für Tomcat und Webserver
  • Automatische Zertifikate mit Let’s Encrypt
  • Monitoring von CPU, RAM, Thread-Auslastung einrichten
  • Load Balancing bei mehreren Tomcat-Instanzen
  • Regelmäßige Updates für Java, Tomcat und Webserver
  • Netzwerkplanung bei Multi-Server Setups beachten
  • Backup der Konfigurationen und Webapps

Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3

Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.

Meine Leistungen umfassen:

  • Professionelle Konfiguration von Routern und Switches

  • Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen

  • Erstellung von Topologien und Simulationen in Cisco Packet Tracer

  • Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG

  • Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible

  • Erstellung von Skripten für wiederkehrende Netzwerkaufgaben

  • Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege

  • Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting

Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.

Related Articles