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 …

Hi zusammen,

Da schließe ich mich MrMarek gerne an.

Ich habe die gleich Problematik. Ich sitze nun schon seit Tagen dran.

Laut tcpdump, kommen die Anfragen zumindest mal über den VPS-Server an dem Gerät mit der Nextcloud an. Nur eben die Antwort “502 Bad Gateway” in Browser.

sudo tcpdump -i wg0 port 443
tcpdump: verbose output suppressed, use -v[v]… for full protocol decode
listening on wg0, link-type RAW (Raw IP), snapshot length 262144 bytes
16:07:26.658259 IP 10.0.0.1.40486 > xyz.fritz.box.https: Flags [S], seq 3230085034, win 64240, options [mss 1460,sackOK,TS val 3495417497 ecr 0,nop,wscale 7], length 0
16:07:26.658643 IP xyz.fritz.box.https > 10.0.0.1.40486: Flags [R.], seq 0, ack 3230085035, win 0, length 0

gibt es Ideen?