Wie in unserem Beitrag über Proxies bereits dargestellt gibt es viele Gründe für die Nutzung eines Reverse Proxies. Doch wie richte ich nun einen solchen Reverse Proxy ein? Dieser Blogpost zeigt die Erstellung eines Nginx Reverse Proxies, als Beispiel soll ein Apache Web Server über eine eigene Domäne ins Internet gestellt werden. Diese Anleitung gilt für einen Linux Server mit Ubuntu Betriebssystem.
Docker
Da sowohl der Nginx Reverse Proxy als auch der Apache Web Server über Docker laufen sollen, muss das Programm zu Beginn installiert werden. Dazu müssen diese Befehle ausgeführt werden:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo apt-get install docker-compose
Die dazugehörige Dokumentation ist hier zu finden: https://docs.docker.com/engine/install/ubuntu/
Nginx
Für den Nginx Reverse Proxy muss ein dedizierter Ordner auf dem Zielsystem erstellt werden. In diesem Ordner muss eine Datei namens „docker-compose.yml“ angelegt werden. Mit einem Textbearbeitungsprogramm (z.B. nano) ist dann folgender Inhalt in die Datei zu schreiben:
version: '3.8'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '80:80'
- '81:81'
- '443:443'
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
networks:
default:
name: npm
external: true
Bevor der Container gestartet werden kann muss das dazugehörige Docker Netzwerk mit folgendem Befehl erstellt werden:
docker network create npm
Danach kann der Container mit dem Befehl „docker compose up -d“ gestartet werden. Über folgende URL ist dann die Admin Oberfläche erreichbar:
http://<IP-Adresse>:81
Standardmäßig besteht das Konto „admin@example.com“ mit dem Passwort „changeme“. Diese Zugangsdaten müssen beim ersten Login geändert werden:
Apache
Ähnlich wie bei Nginx muss für Apache ein eigener Ordner inkl. einer docker-compose.yml Datei mit folgendem Inhalt angelegt werden:
version: '3.9'
services:
apache:
image: httpd:latest
container_name: apache-default
volumes:
- ./website:/usr/local/apache2/htdocs
networks:
default:
name: npm
external: true
Mit dem Befehl „docker-compose up -d“ wird der Apache Webserver dann gestartet und läuft unter dem Namen apache-default.
Erreichbarkeit im Internet
Für den nächsten Schritt wird eine dedizierte Domäne benötigt, die auf die IP-Adresse des Linux Servers zeigt. In unserem Beispiel wird die Domäne blogpost.hansesecure.com genutzt.
In der Admin Oberfläche von Nginx muss zuerst ein neuer Proxy Host angelegt werden:
Dort müssen dann folgende Einstellungen getroffen werden:
Nach dem Speichern ist über die URL dann der Apache Webserver erreichbar:
Ausblick
In diesem Blogbeitrag wurde ein einfacher Weg gezeigt, um einen eigenen Apache Webserver über einen Reverse Proxy im Internet erreichbar zu machen.