Réponse Nginx proxy_pass tronquée

9

J'utilise nginx pour proxy la demande https à mon serveur d'applications (en cours d'exécution sur 8443).
Ce serveur d'application sert des pages dynamiques, certaines d'entre elles comprenant jquery minified.
Les pages sont en erreur car il semble que jquery soit tronqué ... y a-t-il une limite de taille de fichier ou quelque chose?

Ma conf nginx est la suivante:

server {
listen      443;
server_name my_serv.com;
ssl                 on;
ssl_certificate     certificate.pem;
ssl_certificate_key privatekey.pem;

keepalive_timeout 70;

location / {
  proxy_pass https://localhost:8443;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header Host $http_host;
  proxy_buffering off;
  proxy_buffers 8 8k;
}
}
Luc
la source
2
Vérifiez votre journal des erreurs. Il devrait vous expliquer pourquoi les connexions ont été fermées tôt.
kolbyjack
Pourquoi ne laissez-vous pas nginx servir des fichiers statiques comme jquery.js?
VBart

Réponses:

8

Je sais que cette question est super ancienne, mais je viens de rencontrer le même problème. Assurez-vous que l'utilisateur avec lequel vous exécutez nginx a des privilèges d'écriture dans le répertoire proxy_temp. Si vous fournissez une réponse plus importante via votre serveur proxy qui ne peut pas toutes être conservées dans vos proxy_buffers, le reste des données de réponse est écrit sur le disque dans votre répertoire proxy_temp. Si cela ne peut pas en raison de privilèges inadéquats (ou autre chose, par exemple de l'espace disque), la réponse est tronquée.

Un moyen facile de le savoir est que le problème est de vider le cache de votre navigateur et de recharger la page avec les outils de développement Chrome ouverts. Recherchez le fichier tronqué dans l'onglet réseau et si la taille correspond à la taille de votre tampon proxy (64 Ko dans votre cas), alors nginx a probablement des problèmes d'écriture sur le disque.

Plus d'informations sur le nginx proxy_temp_path: http://wiki.nginx.org/HttpProxyModule#proxy_temp_path

Steve
la source
1
Votre réponse m'a inspiré pour résoudre un problème similaire
Tyler Long
0

Si, dans les journaux d'accès, vous voyez le code retour 304 (non modifié) pour le fichier tronqué, essayez de vider le cache du navigateur. Malheureusement, je n'ai pas trouvé de moyen de «corriger» cela à partir de la configuration de nginx.

Marius
la source
-1

Il y en a, mais par défaut son 1G:

http://wiki.nginx.org/HttpProxyModule#proxy_max_temp_file_size

Comme l'a dit @kolbyjack, il y a probablement des erreurs dans le fichier error.log à regarder.

polynôme
la source
2
Cela définit simplement la taille maximale d'un fichier temporaire. nginx ne tronquera pas une réponse si elle ne peut pas toutes être tamponnée, elle sera servie de manière synchrone depuis l'amont.
kolbyjack