Application / serveur HTTP léger pour le contenu statique

J’ai besoin d’une application / serveur HTTP évolutive et performante qui sera utilisée pour le service / téléchargement de fichiers statiques. Je n’ai donc besoin que d’un support pour les opérations GET et PUT .

Cependant, il existe quelques fonctionnalités supplémentaires dont j’ai besoin:

  • Authentification personnalisée: je dois vérifier les informations d’identification par rapport à une firebase database pour chaque requête. Je dois donc être capable d’intégrer l’interaction de la firebase database proprement dite.
  • Prise en charge des clés d’access signées: L’access aux ressources via PUT doit être signé à l’aide d’une clé comme http: // uri /? Key = foo La clé contient alors des informations sur la requête comme md5 (user + path + secret) bloquer les requêtes indésirables. L’application / serveur doit me permettre de vérifier cela.
  • Performance: Je voudrais éviter le contenu de tuyauterie autant que possible. Sinon, l’application entière pourrait être implémentée dans Perl / etc. dans quelques lignes comme CGI.

Perlbal (en mode serveur Web) semble intéressant, mais le modèle mono-thread ne correspond pas à ma recherche de firebase database et ne prend pas non plus en charge les chaînes de requête.

Lighttp / Nginx / … ont quelques modules pour ces tâches, mais il est impossible de tout rassembler sans finir par écrire ses propres extensions / modules.

Alors, comment résoudriez-vous cela? Existe-t-il d’autres serveurs Web légers pour cela? Dois-je implémenter une application à l’intérieur d’un serveur Web (c.-à-d. CGI). Comment puis-je éviter / accélérer le contenu de la tuyauterie entre le serveur Web et mon application.

Merci d’avance!

Jetez un coup d’œil à nodejs http://nodejs.org/

Il existe quelques modules pour les serveurs Web statiques et les interfaces de firebase database: http://wiki.github.com/ry/node/modules

Vous devrez peut-être écrire votre propre gestionnaire de téléchargement de fichiers ou en utiliser un de cet exemple http://www.componentix.com/blog/13

L’application nginx + spawn-fcgi + fcgi écrite en C + memcached + sqlite sert bien les tâches similaires, la latence est d’environ 20-30 ms pour les petites données et les connexions rapides du même réseau local. Autant que je sache, le serveur de production traite environ 100-150 requêtes par seconde sans problème. Sur le serveur de test, j’ai atteint un maximum de 20 000 requêtes par seconde, toujours sans problème. La latence moyenne était d’environ 60 ms. La mise en cache agressive et les sockets de domaine UNIX sont la clé.

Je ne sais pas comment cette configuration se comportera sur les requêtes PUT fréquentes. Dans notre tâche, elles sont très rares et généralement groupées.