NextCloud 20 mit NGINX nicht erreichbar "Bad Gateway 502" (Deutsch)

Hallo zusammen,

ich habe ein Problem mit meiner NextCloud, in Verbindung mit einem NGINX. Ich habe nun in einigen Themen hier nachgeschaut, ich vermute allerdings, dass ich ein anderes Problem habe. Da ich im Thema NextCloud und NGINX kein Profi bin und eher erst damit anfange, versuche ich so weit wie möglich das Problem zu bescheiben. Aber kurz einige Eckdaten:

Meine NetxCloud (IP: 10.0.4.51)

  • NextCloud Version 20
  • Ubuntu Server 20.04
  • NextCloud installiert mit SNAP (Daher kann ich nicht genau sagen welche Datenbank Version installiert ist)
  • NextCloud läuft ohne NGINX fehlerfrei/Let´s Encrypt ebenfalls /

NGINX Reverse Proxy (IP: 10.0.4.50):

  • Ubunut Server 20.04
  • NGINX Installiert mit WebInterface (Proxy-Manager)
  • Vor der Installation wurde Docker, Docker-compose und curl installiert. (War nach der Anleitung von einem Youtuber so geplant // Apfelcast ).

Meine NextCloud lief, vor der versuchten Umstellung mit ReverseProxy fehlerfrei.
Ich habe den Reverse Proxy auch erfolgreich installiert, nach folgender Anleitung:

Ich bekomme auch das Webinterface unter 10.0.4.50:81 erreicht und konnte eine Proxy Host einstellen:

Source: nextcloud.me.de
Destination: https://10.0.4.51:443 (Meine NextCloud reagiert auch auf die IP+Port und ist ebenfalls als Trusted Domains hinterlegt).
SSL: Let´s Encrypt (Zertifikat habe ich bereits erhalten.)
Access: Public

Mein PC ist in einem Subnetz (192.168.3.x/24), Routing ist eingerichtet, die NextCloud ist bereits unter der IP-Adresse erreichbar. Wenn ich nun versuche über meine URL an die NextCloud zu kommen wir mein Paket an die NGINX geleitet, dieser leitet es an die NextCloud weiter. Allerdings bekomme ich nun ein Problem mit meinem TCP Handshake, weil die NextCloud nun nicht über die IP-Adresse der NGINX antwortet (10.0.4.50) sondern über seine eigene IP (10.0.4.51) antwortet. Somit läuft meine Anfrage in die leere und ich erhalte einen 504 Bad Gateway.

Ich habe dann in meiner NextCloud unter der config.php die Einstellungen angepasst, damit der Proxy als trusted eingestellt ist, allerdings scheint das nicht geholfen zu haben.

Hat einer hier noch eine Idee, wo ich schauen muss oder wo ich eventuell einen Fehler habe?
Vielen Danke im voraus für die Unterstützung!

$CONFIG = array (
  'apps_paths' =>
  array (
    0 =>
    array (
      'path' => '/snap/nextcloud/current/htdocs/apps',
      'url' => '/apps',
      'writable' => false,
    ),
    1 =>
    array (
      'path' => '/var/snap/nextcloud/current/nextcloud/extra-apps',
      'url' => '/extra-apps',
      'writable' => true,
    ),
  ),
  'supportedDatabases' =>
  array (
    0 => 'mysql',
  ),
  'memcache.locking' => '\\OC\\Memcache\\Redis',
  'memcache.local' => '\\OC\\Memcache\\Redis',
  'redis' =>
  array (
    'host' => '/tmp/sockets/redis.sock',
    'port' => 0,
  ),
  'log_type' => 'file',
  'logfile' => '/var/snap/nextcloud/current/logs/nextcloud.log',
  'logfilemode' => 416,
  'passwordsalt' => 'wVbyHwfznCNH19urY60t4bgDEn7pKu',
  'secret' => 'M63JxoM2l08ACo9CsqV/n23t6RXwdXaE5H6K1rUFH+cMS+ti',
  'trusted_domains' =>
  array (
    0 => 'localhost',
    1 => 'nextcloud.XXXX.de',
    2 => '10.0.4.51',
  ),
  'datadirectory' => '/var/snap/nextcloud/common/nextcloud/data',
  'dbtype' => 'mysql',
  'version' => '23.0.3.2',
  'overwrite.cli.url' => 'http://localhost',
  'dbname' => 'nextcloud',
  'dbhost' => 'localhost:/tmp/sockets/mysql.sock',
  'dbport' => '',
  'dbtableprefix' => 'oc_',
  'mysql.utf8mb4' => true,
  'dbuser' => 'nextcloud',
 'installed' => true,
  'instanceid' => 'oc3ketkaui7i',
  'ldapProviderFactory' => 'OCA\\User_LDAP\\LDAPProviderFactory',
  'loglevel' => 2,
  'maintenance' => false,
  'allow_local_remote_Servers' => true,
  'trusted_proxy' => '10.0.4.50',
  'overwriteprotocol' => 'https',
  'overwritehost' => 'nextcloud.XXXXX.de',
  'overwritecondaddr' => '10.0.4.50',

Ich habe noch weiter geschaut:
in meine NGINX konnte ich unter den proxy-host-2_error.logs folgendes finden:

2022/04/21 13:28:05 [error] 795#795: *12807 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 192.168.3.101, server: nextcloud.xxxx.de, request: "GET /ocs/v2.php/core/navigation/apps?absolute=true&format=json HTTP/1.1", upstream: "https://10.0.4.51:443/ocs/v2.php/core/navigation/apps?absolute=true&format=json", host: "nextcloud.xxxxx.de"

Vielleicht kann das weiterhelfen…

Grüße,
Marek

Hi, ich hab bei mir das alles manuell konfiguriert, weiß also nicht wie die reverse proxy config bei dir im detail aussieht, aber …

der Nextcloud config Parameter heißt trusted_proxies und ist ein array.
Ich hab das bei mir auf dem selben Host laufen und dabei folgende Config

'trusted_proxies' => 
  array (
    0 => '127.0.0.1',
    1 => '::1',
  ),

zusätzlich hab ich noch (ist aber lt. Doku der default)

'forwarded-for-headers' => 
  array (
    0 => 'HTTP_X_FORWARDED_FOR',
  ),

Der entsprechende Header muss natürlich durch den Reverse Proxy gesetzt werden …