У меня NextCloud 15 работает в кластере DigitalOcean Kubernetes. Когда я загружаю большой (> 1 ГБ) файл, я получаю сообщение об ошибке. Похоже, я сузил его до nginx, и мне интересно, как это исправить. Подробности следуют:
curl -u [redacted] https://[redacted]/[path to large file]
В конце концов, после нескольких сотен МБ успеха, я получил следующее от curl
:
curl: (56) GnuTLS recv error (-9): A TLS packet with unexpected length was received.
Если я настрою kubectl port-forward
к службе или модулю NextCloud и укажите curl
при этом загрузка будет успешной. Нет остановок, которые могли бы вызвать тайм-аут восходящего потока. Так что это не NextCloud или его сервис.
Если я настрою kubectl port-forward
к службе или модулю nginx и укажите curl
при этом я получаю такой же результат, как если бы я указал на DigitalOcean LoadBalancer (A TLS packet with unexpected length was received.
). Так что, скорее всего, проблема связана с nginx.
nginx работает под управлением TLSv1.2, ничего необычного в запуске SSLLabs. Это версия nginx / 1.15.6. Я выключил proxy-buffering
через входную аннотацию и подтвердил, что он обновил nginx.conf
с участием proxy_buffering off;
для этого виртуального хоста. В логах nginx ошибок нет. Прошедшее время и объем загруженных данных варьируются от запуска к запуску.
Я видел в сети болтовню о том, что у nginx проблемы с HTTP / 2, поэтому я еще раз попробовал эти тесты, используя HTTP / 1.1. Те же результаты. Файлы меньшего размера и веб-интерфейс работают нормально, но загрузка больших файлов через curl
, веб-интерфейс или клиент nextcloud не работают.
Есть ли известная проблема с nginx? Та же система, которая использовалась для работы с Apache в Docker, появилась только тогда, когда я перешел на nginx в Kubernetes.
Я улучшил nginx-ingress-controller
развертывание в quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.22.0
, который включает nginx / 1.15.8, и проблемы исчезли. Увидеть Журнал изменений для уточнения.