Prodotto scaricabile "errore di rete sconosciuto" con CloudFlare SU [chiuso]
-
12-12-2019 - |
Domanda
Abbiamo combattuto questo per più di una settimana:
- Quando CloudFlare è FUORI - prodotti scaricabili funzionano bene
- Quando CloudFlare è SU - il download inizia e raggiunge il 100% , la velocità scende a 0 e il download viene danneggiato con un messaggio" errore di rete sconosciuto"
C'è una regola di pagina impostata in CF che dice di non memorizzare nella cache i file che sono attivi domain.com/download*
ma questo non aiuta.Anche in CF "modalità sviluppatore" il problema esiste.Solo quando il cloud è in pausa e si accede direttamente al server, le cose funzionano bene.
Il provider di hosting sospettava che il motivo fosse la codifica gzip.Così ho fatto un semplice test:
- Creare una directory domain.com/download-test
- Aggiungi un .file htaccess con contenuti:
AddType binary/octet-stream .bin
SetOutputFilter DEFLATE
- Generato un semplice file da 10 mb nella directory:
dd se = / dev / urandom di = test.bin bs = 1 MB conteggio=10
10 + 0 record in
10 + 0 record fuori
10000000 byte (10 MB) copiati, 1.45406 s, 6.9 MB/ s
- Scaricare il file con Cloudflare = SU senza alcun problema e vedo content-encoding: gzip nelle intestazioni HTTP.Quindi il problema non è sicuramente gzip.
Il provider di hosting dice che non possono fare nulla in quanto tutto funziona direttamente sul loro server.Mi sembra giusto.
CloudFlare ha detto "creare un sottodominio e servire download da lì".Ma questo non è possibile perché A) Il frontend del negozio funziona interamente su HTTPS e il nostro certificato SSL è solo per domain.com e www.domain.com B) Magento non ha alcuna opzione per servire prodotti downlodable da un sottodominio.
Alla disperata ricerca di una soluzione.
NOTA:I nostri prodotti scaricabili non vengono caricati ma collegati a un host esterno (nel caso in cui ciò sia importante).
Soluzione
Soluzione:
Se gzip è abilitato nel tuo php-fpm questo fa sì che PHP dia sempre un output compresso indipendentemente da .impostazioni htaccess.Quindi quello che succede è che Cloudflare riceve questo output compresso e lo interpreta in modo errato, pensando che il file sia più grande di quello che viene consegnato e quindi il download non viene mai completato e ad un certo punto viene rotto.
La soluzione è quella di mantenere gzip per php-fpm su off quando si utilizza Cloudflare e tutto vola.