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:

  • Nginx protegge la directory con password, ad exception di specifici ip
  • nginx submit in bianco 200 risposte
  • Ottimizzare il numero di lavoratori per diverse istanze di gunicorn
  • Come ospitare e gestire 1000 siti di traffico a basso traffico su un singolo server nginx
  • Centos / vsFTPD / Nginx / php-fpm - Autorizzazione negata (500 Errore interno del server)
  • Traffico misterioso di traffico cinese: come posso scoprire quale server DNS è stata utilizzata una richiesta HTTP?
  • 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

  • Ottimizzare il numero di lavoratori per diverse istanze di gunicorn
  • Memorizzazione di chiavi protette sul server web Ubuntu
  • Come eseguire Gunicorn a monte con una configuration SSL Nginx?
  • UnicodeEncodeError quando carichi i file in Django admin
  • nginx senza nome_server e utilizzando solo l'indirizzo IP statico?
  • IP errato con proxy inverso di lighttpd
  • 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.