Rulez o aplicație într-un container docker (https://github.com/filebrowser/filebrowser/) în care încerc să încarc fișiere foarte mari (>2) GB. Containerul expune aplicația pe un port nestandard de pe localhost la care mă conectez printr-un proxy invers (astfel încât să pot rula mai multe aplicații pe o singură mașină). Problema este că atunci când încarc un fișier de peste 2097152 de octeți, se înregistrează erori. Pot vedea că fișierele sunt încărcate complet în nginx și că ajung parțial la aplicația conianerizată, dar apoi se blochează pentru o lungă perioadă de timp la 2097152 de octeți înainte de a eroa, determinând aplicația containerizată să dea o eroare EOF neașteptată. Bănuiesc că este ceva în neregulă cu nginx, deoarece atunci când încarc un fișier direct în aplicația containerizată, funcționează bine. Am încercat să adaug o varietate de directive la configurația nginx și sunt nedumerit. Configurația mea nginx pentru site este:
Server {
nume_server example.com;
client_max_body_size 30g;
dimensiunea_buffer_proxy 1024k;
proxy_buffers 4 1024k;
proxy_busy_buffers_size 1024k;
proxy_max_temp_file_size 10000m;
proxy_connect_timeout 10000;
proxy_send_timeout 10000;
proxy_read_timeout 10000;
send_timeout 10000;
client_header_timeout 10000;
client_body_timeout 10000;
Locație / {
proxy_pass http://localhost:8088/;
proxy_http_versiunea 1.1;
proxy_cache_bypass $http_upgrade;
proxy_set_header Actualizare $http_upgrade;
proxy_set_header Conexiune „upgrade”;
proxy_set_header Gazdă $gazdă;
proxy_set_header X-Real-IP $adresă_la distanță;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $schema;
proxy_set_header X-Forwarded-Host $gazdă;
proxy_set_header X-Forwarded-Port $server_port;
proxy_connect_timeout 10000s;
proxy_send_timeout 10000s;
proxy_read_timeout 10000s;
}}
Eroarea pe care o primesc în nginx este:
2022/04/14 20:26:56 [eroare] 3286524#3286524: *13184 connect() a eșuat (111: Conexiune refuzată) în timpul conectării la amonte, client: xxx.xxx.xxx.xxx, server: example.com, cerere: „POST /api/resources/Fedora-KDE-Live-x86_64-35-1.2.iso?override=false HTTP/1.1”, în amonte: „http://[::1]:8088/api/resources/ Fedora-KDE-Live-x86_64-35-1.2.iso?override=false", gazdă: "example.com", referitor: "https://example.com/files/"
Edit: După ce am săpat mult, se pare că soluția a fost eliminarea proxy_buffer_size
, proxy_buffers
, și proxy_busy_buffer_size
si adauga proxy_request_buffer nr;
Nu știu de ce funcționează asta, dar da.