2010-11-17 25 views
1

J'ai une application ruby ​​on rails fonctionnant sur passager/nginx. L'application permet aux utilisateurs d'avoir un accès de téléchargement à de très gros fichiers (sauvegardes de machines virtuelles, parfois 200Gigs) et je suis sur une connexion avec mon ISP jusqu'à 100 Mbit/sec.Comment pouvez-vous limiter la vitesse de téléchargement en utilisant Rails ou Nginx

Le problème est que si vous commencez à télécharger un de ces gros fichiers, le transfert montera aussi haut que possible, ce que je ne veux pas. Je voudrais limiter le téléchargement de ces gros fichiers à un débit fixe tel que 150 Kbps tout en permettant des vitesses plus rapides sur d'autres parties de l'application. Est-ce possible?

+0

pour moi c'est une question serverfault. C'est une configuration nginx. – shingara

Répondre

4

Vous devez inclure une telle directive dans votre fichier de configuration nginx (à l'intérieur du bloc de configuration de votre serveur):

limit_rate 150k; 

Cela limite la vitesse de transmission de la réponse au client. Cela fonctionne comme une limite pour chaque connexion, pas pour le taux de transfert total du serveur. (Vous pouvez peut-être ajuster max_clients = worker_processes * worker_connections en tant que solution de rechange pour limiter le transfert total.)

Consultez la documentation de nginx pour limit_rate. Il existe également une directive limit_rate_after utile pour définir cette limite uniquement lorsque le téléchargement dépasse une certaine taille.