Probleme mit mod_reqtimeout und Upload großer Dateien

Hallo.
Unser Webserver (apache 2.4.29-1ubuntu4.13 mit NC 18.0.2 auf Ubuntu 18.04 VM) macht große Probleme mit dem Upload großer Dateien. Ich habe mittlerweile herausgefunden, dass es ganz offensichtlich an dem Modul mod_reqtimeout liegt.
Wenn ich unter /etc/apache2/mods-enabled/reqtimeout.conf einen Eintrag wie diesen vornehme:
RequestReadTimeout header=20-40,minrate=250 body=10-30,minrate=250
kann ich mit Nextcloud keine größeren Files mehr hochladen. In der nextcloud.log Datei erscheint dann sowas wie:

"message":{"Exception":"Sabre\\DAV\\Exception\\BadRequest",
"Message":"Expected filesize of 40799522 bytes but read (from Nextcloud client) and wrote (to Nextcloud storage) 36667392 bytes. Could either be a network problem on the sending side or a problem writing to the storage on the server side."

Deaktiviere ich hingegegen das Modul mit den Einträgen
RequestReadTimeout header=0 body=0 funktioniert der Upload der Dateien wieder. Dann aber gibt es ein anderes Problem: Auf dem gleichen Server gibt es ein paar Verzeichnisse, die gegen einen LDAP-Server mit einer .htaccess Datei auth.
Wenn nun der Eintrag auf 0 (disabled) steht, erscheint auf dieser Seite regelmäßig:
500 -- internal server error.
In den apache2-error.logs finde ich dann:

[Wed Apr 22 21:35:09.381101 2020] [reqtimeout:info] [pid 22381] [client 94.xx.xx.xx:65168] AH01382: Request header read timeout

Mit anderen Worten: Für das .htaccess muss das modul aktiviert sein – für Nextcloud darf es aber nicht aktiviert werden. Das kann doch nicht sein, dass man nicht beides auf einem Server laufen lassen kann? Wie kann man das lösen? Es nervt wirklich extrem…

Danke.

Hallo

Zwei fragen
Was hast du Unter einstellungen -> Übersicht -> Sicherheits- & Einrichtungswarnungen
Hast du da einen Grünen hacken ?

UND die zweite
Was hast du an der PHP.ini geändert und an welcher php7.???

Hi.
Bei den Sicherheits- & Einrichtungswarnungen erhalte ich:
Alle Überprüfungen bestanden. (grüner Button)

Es ist diese php.ini:
/etc/php/7.2/apache2/php.ini (mit phpinfo.php ermittelt)
Dort habe ich zB den opcache aktiviert – oder aber
upload_max_filesize = 8192M eingetragen.

Hallo,

Hmmm
ok was verwendet die cloud an php das kannst du sehen unter einstellungen -> System -> php
im dem zusammenhang schau auch unter Netzwerke nach welche leitung du hast 10MB oder 100MB oder vl 1GB ?

ansonsten las man die befele in der console laufen

sed -i ‘s#memory_limit = 128M#memory_limit = 2G#’ /etc/php/7.3/apache2/php.ini

sed -i ‘s#upload_max_filesize = 2M#upload_max_filesize = 999G#’ /etc/php/7.3/apache2/php.ini

sed -i ‘s#;opcache.enable=1#opcache.enable=1#’ /etc/php/7.3/apache2/php.ini

sed -i ‘s#;opcache.enable_cli=0#opcache.enable_cli=1#’ /etc/php/7.3/apache2/php.ini

sed -i ‘s#;opcache.interned_strings_buffer=8#opcache.interned_strings_buffer=8#’ /etc/php/7.3/apache2/php.ini

sed -i ‘s#;opcache.max_accelerated_files=10000#opcache.max_accelerated_files=10000#’ /etc/php/7.3/apache2/php.ini

sed -i ‘s#;opcache.memory_consumption=128#opcache.memory_consumption=128#’ /etc/php/7.3/apache2/php.ini

sed -i ‘s#;opcache.save_comments=1#opcache.save_comments=1#’ /etc/php/7.3/apache2/php.ini

sed -i ‘s#;opcache.revalidate_freq=2#opcache.revalidate_freq=1#’ /etc/php/7.3/apache2/php.ini

sed -i ‘s#;opcache.revalidate_freq=2#opcache.revalidate_freq=1#’ /etc/php/php7.3/apache2/php.ini",

Ich hab php7.3 musst es halt abändern auf php 7.2

Im grunde hab ich das selbe system wie du

http://mein-nextgeneration.ddns.net/ nur einiges mehr :grin:

Betriebssystem:
Prozessor: Intel® Xeon® CPU E5-2690 v2 @ 3.00GHz Intel® Xeon® CPU E5-2690 v2 @ 3.00GHz Intel® Xeon® CPU E5-2690 v2 @ 3.00GHz Intel® Xeon® CPU E5-2690 v2 @ 3.00GHz (4 4 4 4 cores)

Speicher: 15.6 GB

Sollte mehr als reichen?!? Es sind ca 100 Leute daruf unterwegs (aber nie alle gleichzeitig)

Netzwerk: Status: up
Geschwindigkeit: 10000 Mbps Duplex: full

Die anderen Angaben:

memory_limit = 512M
upload_max_filesize = 8192M
max_filesieze: Eintrag gibt es nicht

opcache ist enabled und so eingestellt wie auf der Homepage vorgeschlagen. Ich denke nicht ,dass es daran liegt.

lach das system packt locker 100 leute :wink:

Würde ich hoch setzen

würde ich auf 10G setzen also upload_max_filesize = 10G

ich hab da 999G drin

?? hab ich den wo geschieben ?

was sagt den einstellungen -> System -> php ?

Version: *7.2.30*
Arbeitspeicher-Grenzwert: *1 GB*
Maximale Ausführungszeit: *3600*
Maximale Größe zum Hochladen: *10 GB*

den letzten Eintrag hatte ich bereits geändert – wie von dir vorgeschlagen.

und was sagt er jetzt wenn du was hochladen willst ?

Vielleicht kannst du ja den Parameter so konfigurieren, dass beide Programme damit klar kommen.

https://httpd.apache.org/docs/2.4/mod/mod_reqtimeout.html

Auch kannst du dir noch folgende App anschauen:

https://apps.nextcloud.com/apps/flowupload

Ich habe mod_reqtimeout.html nun mal komplett deaktiviert (und zwar nicht mit den Werten 0 sondern mit a2dismod reqtimeout (mir ist klar, dass das nicht optimal ist --> “slowloris attacke” möglich – aber ich wüsste gerne, woran es liegt…)

Nun funktionierte der Upload großer Dateien – aber gerade hatte ich auf der .htaccess-Seite, die eine Anmeldung am LDAP erfordert, dafür wieder “500 – internal server error” … das kommt aber wie gesagt nicht immer. In der Log-Datei steht dann wieder:

[Thu Apr 23 12:12:58.663608 2020] [authnz_ldap:info] [pid 19669] [client 89.xxx.xxx.xxx:46830] AH01695: auth_ldap authenticate: user <mein-login> authentication failed; URI /videos/ [LDAP: ldap_simple_bind() failed][Can't contact LDAP server]

Vielleicht kannst du diesen oder einen anderen Parameter direkt in deiner apache2-ldap-dir-Konfiguration außerhalb von deine rapache2-nextcloud-dir-Konfiguration eintragen.

https://community.wandisco.com/s/article/Apache-configuration-for-LDAP-authentication

Vielleicht kannst du ja auch “RequestReadTimeout” auch für das LDAP-Zeug konfigurieren.

Ist einen Versuch wert … ich weiß aber nicht, ob man es auch direkt in der .htaccess-Datei unterbringen kann

Schau hier:

Ok, in deinem Link wird der Eintrag aber auch “nur” pro /etc/httpd/sites-available/untergebracht. Was ich bräuchte, ist aber eine Eintrag direkt für dieses eine Verzeichnis – also direkt in die zugeörige .htaccess-Datei, oder?

Kommt drauf an. Nutzt du nicht unterschiedliche virtuelle Hosts für nextcloud.domain.tld und irgendwas.domain.tld? Wenn nicht kann man vielleicht irgendwie was mit Unterverzeichnissen machen. Welche virtuellen Hosts hast du enabled?

ich habe sowohl nextcloud.domain.de als auch office.domain.de (für das integrierte collabora office).
enabled sind sowohl der ssl/443 als auch der default/80 (der aber weieterleitet).

Ja. Aber auf welchen (virtuellen) Webserver (also Namen) ist dein Htaccess zur Anmeldung über LDAP konfiguriert?

hmm hast du Self Zertifikat ? hab mal gehört dass da auch probleme gibt

Ich habe da die IP der Firewall eingetragen, die die Anfrage für LDAP dann an den dahinter liegenden LDAP-Server weiterleitet. (Port-forwarding auf der Firewall ist eingetragen)

Nicht mehr – jetzt läuft da alles mit Let’s Encrypt (sonst hätte ich ja auch keinen grünen Haken: “Alles ok!”)

ich hab ein Self Zertifikat und hab auch status

:wink:

teste mal das Port
https://www.advanced-port-scanner.com/de/