Skip to main content

Nginx Reverse Proxy

Docker installieren

Nginx Proxymanager als Dockerimage erstellen

https://nginxproxymanager.com/setup/#running-on-raspberry-pi-arm-devices


Datei erstellen

docker-compse.yml Datei erstellen

MYSQL_PASSWORD anpassen

im Ordner der Docker Compose File folgenden Befehl absetzen: 

docker-compose up -d


Default Administrator User

Email:    admin@example.com
Password: changeme

Immediately after logging in with this default user you will be asked to modify your details and change your password.

Upgrade zu neuer Version

docker-compose down
docker-compose pull
docker-compose up -d
Proxy Stand 2023-06

Bildschirmfoto 2023-06-11 um 22.56.38.png

Nginx manuelle Installation

Schritt 1: Installation von Nginx

sudo apt-get update
sudo apt-get install nginx

Schritt 2: Konfiguration des Reverse Proxys

cd /etc/nginx/conf.d/

Erstellen der Konfiguartionsdatei für den Reverse Proxy: 

sudo nano reverse_proxy.conf

Folgenden Inhalt in die Datei 

server {
    listen 80;
    server_name DOMAIN_NAME;

    location / {
        proxy_pass http://IP_ADDRESS:PORT;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

Ersetzen Sie "DOMAIN_NAME" durch den Domainnamen oder die IP-Adresse des Servers, über den Sie auf die Computer im Netzwerk zugreifen möchten. Ersetzen Sie außerdem "IP_ADDRESS" durch die IP-Adresse des Computers, den Sie verfügbar machen möchten, und "PORT" durch den entsprechenden Port des Dienstes, auf den Sie zugreifen möchten.

Schritt 3:  Neustart des Nginx-Servers

sudo service nginx restart

Schritt 4: Firewall-Einstellungen

Firewall-Einstellungen Wenn Sie eine Firewall auf Ihrem System verwenden (z. B. UFW), müssen Sie möglicherweise den Port öffnen, den Sie in der Konfigurationsdatei festgelegt haben. Verwenden Sie den folgenden Befehl, um den Port zu öffnen (ersetzen Sie "PORT" durch den tatsächlichen Port):

sudo ufw allow PORT

Schritt 5: Überprüfung des Reverse Proxys Geben Sie die Domain oder IP-Adresse des Servers, über den Sie auf die Computer im Netzwerk zugreifen möchten, in einen Webbrowser ein. Wenn alles korrekt konfiguriert ist, sollten Sie auf den Dienst zugreifen können, der auf dem Computer im Netzwerk läuft.

SSL-Zertifikat

Schritt 1: Installation des Certbot-Tools Certbot ist ein Open-Source-Tool, das die Einrichtung von SSL-Zertifikaten von Let's Encrypt automatisiert. Installieren Sie Certbot auf Ihrem Linux-System, indem Sie die Anweisungen auf der offiziellen Certbot-Website befolgen. Die genauen Schritte können je nach Linux-Distribution variieren.

Schritt 2: Konfiguration des Webservers Stellen Sie sicher, dass Ihr Webserver (z.B. Nginx oder Apache) ordnungsgemäß für die Subdomain konfiguriert ist. Die Subdomain muss auf den richtigen Server verweisen und die erforderlichen Einstellungen für den SSL-Traffic zulassen.

Schritt 2a: Öffnen Sie das Terminal auf Ihrem Linux-System.

Schritt 2b: Führen Sie die folgenden Befehle aus, um Certbot zu installieren und das Nginx-Plugin zu aktivieren:

sudo apt update 
sudo apt install certbot python3-certbot-nginx

Diese Befehle aktualisieren zunächst die Paketlisten auf Ihrem System und installieren dann Certbot sowie das Nginx-Plugin für Certbot.

Schritt 2c: Überprüfen Sie, ob Certbot erfolgreich installiert wurde, indem Sie den Befehl certbot --version ausführen. Sie sollten eine Ausgabe sehen, die die installierte Version von Certbot anzeigt.

Schritt 2d: Konfiguration des Nginx-Plugins in Certbot: Certbot benötigt Informationen über die Nginx-Konfiguration, um das SSL-Zertifikat erfolgreich zu generieren. Führen Sie den folgenden Befehl aus, um das Nginx-Plugin in Certbot zu konfigurieren:

sudo certbot --nginx


Certbot wird die Nginx-Konfiguration analysieren und Ihnen dann eine Liste der verfügbaren Domains anzeigen, für die Sie ein SSL-Zertifikat erhalten können. Wählen Sie die gewünschte Subdomain aus, indem Sie die entsprechende Nummer eingeben und die Anweisungen befolgen.

Schritt 2e: Überprüfen Sie die Zertifikatserstellung: Certbot führt eine Herausforderung durch, um Ihre Kontrolle über die Subdomain zu überprüfen. Stellen Sie sicher, dass der Nginx-Server während dieses Prozesses erreichbar ist.

Certbot generiert das SSL-Zertifikat und speichert es auf Ihrem System. Die genauen Speicherorte variieren je nach Linux-Distribution und Nginx-Konfiguration. Certbot nimmt automatisch die erforderlichen Änderungen an Ihrer Nginx-Konfigurationsdatei vor, um das neu erstellte SSL-Zertifikat zu verwenden.

Schritt 2f: Neustart des Nginx-Servers: Starten Sie den Nginx-Server neu, damit die Konfigurationsänderungen wirksam werden:

sudo service nginx restart

Nach Abschluss dieser Schritte sollte der Nginx Reverse Proxy das gültige SSL-Zertifikat verwenden und den Datenverkehr über HTTPS verschlüsseln. Überprüfen Sie dies, indem Sie die Subdomain in einem Webbrowser öffnen und sicherstellen, dass das Zertifikat korrekt funktioniert.

Schritt 3: Zertifikatserstellung mit Certbot Führen Sie den folgenden Befehl aus, um Certbot zu verwenden und ein SSL-Zertifikat für den Reverse Proxy zu erhalten:

sudo certbot certonly --nginx -d subdomain.example.com

Ersetzen Sie "subdomain.example.com" durch Ihre eigene Subdomain.

Certbot interagiert mit Nginx, erkennt die Konfiguration der Subdomain und fordert Sie auf, den gewünschten Domainnamen und die E-Mail-Adresse einzugeben. Befolgen Sie die Anweisungen, um den Prozess abzuschließen.

Schritt 4: Konfiguration des Nginx Reverse Proxys Certbot sollte automatisch die erforderlichen Änderungen an Ihrer Nginx-Konfigurationsdatei vornehmen, um das neu erstellte SSL-Zertifikat zu verwenden. In der Regel werden die Änderungen in einer separaten Konfigurationsdatei unter /etc/nginx/conf.d/ vorgenommen.

Überprüfen Sie die Nginx-Konfigurationsdateien und stellen Sie sicher, dass der Reverse Proxy ordnungsgemäß auf das SSL-Zertifikat verweist. Normalerweise werden die SSL-Einstellungen in einer server-Block-Konfiguration wie folgt aussehen:

server {
    listen 443 ssl;
    server_name subdomain.example.com;

    ssl_certificate /etc/letsencrypt/live/subdomain.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/subdomain.example.com/privkey.pem;

    location / {
        proxy_pass http://IP_ADDRESS:PORT;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

Stellen Sie sicher, dass die Pfade zu den Zertifikatdateien (ssl_certificate und ssl_certificate_key) korrekt angegeben sind und auf die von Certbot generierten Zertifikate verweisen.

Schritt 5: Neustart des Nginx-Servers Starten Sie den Nginx-Server neu, damit die Konfigurationsänderungen wirksam werden:

sudo service nginx restart

Nach Abschluss dieser Schritte sollte der Nginx Reverse Proxy das gültige SSL-Zertifikat verwenden und den Datenverkehr über HTTPS verschlüsseln. Überprüfen Sie dies, indem Sie die Subdomain in einem Webbrowser öffnen und sicherstellen, dass das Zertifikat korrekt funktioniert.

Konfiguratinsdatei für mehrere Subdomains

Wie sieht die Config-Datei aus, wenn mehrere Rechner durchgeleitet werden sollen: 

http {
    # HTTPS-Server für Port 443
    server {
        listen 443 ssl;
        server_name subdomain1.example.com;

        ssl_certificate /etc/letsencrypt/live/subdomain1.example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/subdomain1.example.com/privkey.pem;

        location / {
            proxy_pass http://IP_ADDRESS1:PORT1;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }

    # HTTPS-Server für Port 443, zweite Subdomain
    server {
        listen 443 ssl;
        server_name subdomain2.example.com;

        ssl_certificate /etc/letsencrypt/live/subdomain2.example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/subdomain2.example.com/privkey.pem;

        location / {
            proxy_pass http://IP_ADDRESS2:PORT2;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }

    # Weitere server-Blöcke für zusätzliche Subdomains und Reverse-Proxy-Verbindungen
    # ...

    # Weitere Nginx-Konfigurationseinstellungen
    # ...
}