Apache2 Kit
Version vom 23. März 2025, 15:38 Uhr von Thomas.will (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „= Apache2 Workshop – Kompaktkurs (1 Tag) = == Vorbereitung == '''Installation Apache2 & OpenSSL''' *apt install -y apache2 openssl '''Module aktivieren'''…“)
Apache2 Workshop – Kompaktkurs (1 Tag)
Vorbereitung
Installation Apache2 & OpenSSL
- apt install -y apache2 openssl
Module aktivieren
- a2enmod ssl
- a2enmod rewrite
- a2enmod headers
- a2enmod proxy
- a2enmod proxy_http
- a2enmod proxy_wstunnel
- systemctl reload apache2
Zertifikate erzeugen
Self-Signed CA und Zertifikate
- mkdir -p /etc/apache2/ssl
- openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/server.key -out /etc/apache2/ssl/server.crt -subj "/CN=server.it1XX.int"
Virtuelle Hosts mit HTTPS
Standardkonfiguration für HTTPS Erstelle Datei: */etc/apache2/sites-available/server.conf*
<VirtualHost *:443>
ServerName server.it1XX.int
DocumentRoot /var/www/server
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/server.crt
SSLCertificateKeyFile /etc/apache2/ssl/server.key
<Directory /var/www/server>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/server_error.log
CustomLog ${APACHE_LOG_DIR}/server_access.log combined
</VirtualHost>
Weitere Seiten Dupliziere den Block für:
- docker.it1XX.int → /var/www/docker
- gelb.it1XX.int → /var/www/gelb
- blau.it1XX.int → /var/www/blau
Jeweils mit eigenem Logfile und DocumentRoot
Aktivieren
- a2ensite server.conf
- a2ensite docker.conf
- a2ensite gelb.conf
- a2ensite blau.conf
- systemctl reload apache2
HTTP auf HTTPS umleiten
Erstelle Datei: */etc/apache2/sites-available/redirect.conf*
<VirtualHost *:80>
ServerName server.it1XX.int
Redirect permanent / https://server.it1XX.int/
</VirtualHost>
Dupliziere und passe für alle vier Domains an. Dann:
- a2ensite redirect.conf (und weitere)
- systemctl reload apache2
Optionen testen
Ändere in einem <Directory>:
Options -Indexes +FollowSymLinks
Rufe eine Seite ohne index.html auf – Verzeichnis darf nun nicht mehr angezeigt werden.
Zugriff beschränken (IP)
<Directory /var/www/gelb>
Require ip 10.0.0.0/8
</Directory>
Logging kontrollieren
- tail -f /var/log/apache2/server_access.log
- tail -f /var/log/apache2/server_error.log
- journalctl -fu apache2
Reverse Proxy Beispiel
Websocket und Webapp auf Port 3000
<VirtualHost *:443>
ServerName docker.it1XX.int
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/server.crt
SSLCertificateKeyFile /etc/apache2/ssl/server.key
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:3000/
ProxyPassReverse / http://127.0.0.1:3000/
ProxyPass /socket ws://127.0.0.1:3000/socket
ProxyPassReverse /socket ws://127.0.0.1:3000/socket
</VirtualHost>
Kontrolle & Status
- apachectl configtest
- systemctl restart apache2
- ss -lntp | grep apache2
- apachectl status (mod_status aktivieren falls gewünscht)
Testinhalte bereitstellen
- mkdir -p /var/www/server
- echo "Hallo von server.it1XX.int" > /var/www/server/index.html
- usw. für docker, gelb, blau
Fazit
Dieser 1-Tages-Kurs liefert:
- Apache2 mit SSL-Verschlüsselung
- Umleitung HTTP → HTTPS
- Zugriffskontrolle, Logging, Optionen
- Name-based VirtualHosts
- Reverse Proxy mit Websockets
PHP, MariaDB & Dynamic Content werden in einem Folgekurs behandelt.