nginx termina la connessione dopo 65 k byte

Ho nginx configurato come front-end per un'applicazione Python in esecuzione sotto gunicorn, ma nginx sta terminando le connessioni dopo che sono stati inviati circa 65k di dati.

Ad esempio, ho una visione simile a questa:

def debug_big_file(request): return HttpResponse("x" * 500000) 

Ma quando accedo questo URL tramite nginx, ottengo solo 65283 byte:

 $ curl https://example.com/debug/big-file | wc … curl: (18) transfer closed with outstanding read data remaining 0 1 65283 

Si noti che tutto funziona come previsto quando si accede direttamente a gunicorn:

 $ curl http://localhost:1234/debug/big-file | wc … 0 1 500000 

La relativa configuration nginx:

 location / { proxy_pass http://localhost:1234/; proxy_redirect off; proxy_headers_hash_bucket_size 96; } 

E versione nginx 1.7.0

Alcuni altri fatti:

  • Il numero di byte è coerente dalla richiesta a richiedere, ma varia a seconda del contenuto (lo notai prima con un grande file PNG, tagliato dopo 65.372 byte, non 65.283)
  • 110 k byte vengono inviati correttamente (vale a dire "x" * 110000 restituisce tutti i 110.000 byte), ma 120 k byte non sono
  • tcpdump suggerisce che nginx sta inviando un pacchetto RST a gunicorn: nginx che invia RST

  • la ricostruzione dei pacchetti e il gestore di pacchetti su debian
  • Impostare nginx.conf per negare tutte le connessioni ad exception di determinati file o directory
  • nginx meglio di apache per il contenuto dinamico?
  • il modo migliore per eseguire il debug del file di configuration nginx?
  • Imansible assegnare l'indirizzo richiesto
  • Redirect tutti i sottodomini al dominio principale con HTTPS senza un cert di wildcard (nginx)
  • 302 loop di reindirizzamento con nginx e Wordpress
  • Nginx e buffering di grandi risposte
  • One Solution collect form web for “nginx termina la connessione dopo 65 k byte”

    Va bene! Dopo aver controllato due volte i log di nginx, questo si è rivelato il problema:

     2014/05/26 16:50:56 [crit] 31396#0: *11 open() "…/proxy_temp/2/00/0000000002" failed (13: Permission denied) while reading upstream, client: 1.2.3.4, server: _, request: "GET /debug/big-file HTTP/1.1", upstream: "http://127.0.0.1:1234/debug/big-file", host: "example.com" 

    Alcune modalità in cui le autorizzazioni per la directory proxy_temp sono state proxy_temp impedendo a nginx di bufferare correttamente.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.