Mastering Security: Wie richte ich einen Nginx Reverse Proxy ein?

12. November 2024

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.

Sie sehen gerade einen Platzhalterinhalt von Facebook. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.

Mehr Informationen

Ähnliche Beiträge

Die besten Sicherheitsmaßnahmen sind nutzlos, wenn schwache Zugangsdaten gewählt werden. Damit stellen sich zwei wesentliche Fragen, welche ich nachfolgend erläutern [...]

26. Juni 2017

WordPress ist nach wie vor, gerade bei Neulingen, das Mittel zur Wahl, um schnell eine ansehnliche Website zu erstellen. Alles [...]

26. Juni 2017

Wir sind sicher, denn wir haben einen Virenscanner und eine Firewall! Diese Aussage fällt häufig als erstes und sollte daher [...]

11. Juli 2017

Fast täglich werden Nutzer zu Opfern sogenannter Phishing-Mails. Daher möchte ich in diesem kurzen Beitrag aufzeigen, auf welche Details geachtet [...]

14. Juli 2017