Nginx Reverse-Proxy funktioniert nur im internen Netzwerk

Nginx Reverse-Proxy funktioniert nur im internen Netzwerk

Ich wollte das folgende Ziel erreichen und es in einem internen Netzwerk zum Laufen bringen. Extern funktioniert dies jedoch nicht.

Ziel: Bereitstellung von Nginx zum Reverse-Proxy von n-Servern mit unterschiedlichen privaten IP-Adressen. Öffnen Sie nur die Ports 80/443 auf dem Router und leiten Sie sie an den Nginx-Server im Backend weiter.

Ngix Version 1.18.0 auf Ubuntu 22.04 LTS (Jammy Jellyfish)

Ich habe einen Domänennamen, der auf die öffentliche IP meines Routers verweist, und ich habe eine Nginx-Reverse-Proxy-Konfiguration, die nur dann gut funktioniert, wenn ich mit dem WLAN zu Hause (internes Netzwerk) verbunden bin. Auf die Backend-Server kann jedoch nicht zugegriffen werden, wenn ich beispielsweise mein LTE auf meinem Telefon ausprobiere.

Hier ist meine Reverse-Proxy.conf:

    server {
        server_name my.domainname.com;
        access_log /var/log/nginx/reverse-access.log;
        error_log /var/log/nginx/reverse-error.log;
        
        listen 443 ssl;
        listen [::]:443 ssl;
        ssl_certificate /etc/ssl/certs/localhost.crt;
        ssl_certificate_key /etc/ssl/private/localhost.key;
        ssl_protocols TLSv1.2 TLSv1.1 TLSv1;


        location /guac/ {
        proxy_pass http://privateip1:port/guacamole/;
        proxy_buffering off;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $http_connection;
        proxy_cookie_path /guacamole/ /guac/;
        access_log off;
        }

        location / {
        proxy_buffering off;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $http_connection;
        proxy_pass http://privateip2:port;
        
        }
        

        location /api {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://privateip:port;
        }


    }

    server {
        listen 80;
        listen [::]:80;
        server_name my.domainname.com;
        return 301 https://$server_name$request_uri;
    }

Weitere Informationen: Ich habe auf dem Telefon gesehen, dass der Browser versucht hat, auf die private IP-Adresse 192.xxx zuzugreifen. Dann habe ich versucht, eine weitere Portweiterleitungsregel auf dem Router zu erstellen und auf diesen Server zu verweisen, aber ich habe immer noch denselben „Nicht erreichbar“-Fehler auf meinem Telefon erhalten, nachdem ich die private IP durch die öffentliche IP des Routers mit diesem neu geöffneten Port ersetzt hatte. Ich habe auch die Firewall-Regel auf diesem Server zugelassen, um TCP/UDP auf seinem Port zu akzeptieren und sicherzustellen, dass nichts unterwegs ist, aber immer noch kein Glück.

Meine Frage lautet also: Ist es möglich, dieses Ziel mit dem Reverse-Proxy von Nginx zu erreichen?

Bitte lassen Sie mich wissen, wenn Sie weitere Informationen benötigen.

Danke,

Antwort1

Ok, ich habe es herausgefunden, es war mein Router. Ich habe DMZ eingeschaltet und den Nginx-Server als DMZ-Host hinzugefügt und er ist jetzt vom Internet aus zugänglich.

Zwei Beiträge haben mir dabei geholfen, das herauszufinden:

Superuser-Beitrag

Beitrag über Stackoverflow

Danke,

verwandte Informationen