Gatejs pourrait être intéressant mais j'ai du mal à comprendre ce qu'il fait précisément et pourquoi il serait mieux que les autres solutions citées (ou haproxy dont la version 1.5 vient juste de sortir).
gatejs est un bundle complet de proxy(ing) HTTP, en ce sens il regroupe des fonctionnalités de plusieurs soft tel que nginx ou squid.
Je ne me suis pas posé la question par rapport à haproxy, mais je pense qu’au-delà des performances la flexibilité ira au bénéfice de gatejs.
Ce serait possible d'avoir un cas d'usage ? J'ai un peu regardé les exemples sur le wiki mais j'ai l'impression que je pourrais faire tout aussi bien avec les autres outils.
Les cas sont multiple mais globalement avoir des requêtes HTTP modifiables qui passent par du Javascript facilite énormément les taches de debug ou d'audit
Pour exemple, pour optimiser le cache il est essentiel de pouvoir regrouper les urls entre elles. Pour être encore plus précis, Grooveshark par exemple délivre les musiques via un système de post HTTP qui empêche pratiquement n'importe quel proxy de cacher cette données (la musique).
gatejs embarque un opcode store qui et comparable au vieux store_url de squid (qui n'est plus disponible maintenant) et qui été fort utile pour regrouper les URLs, cependant même lui ne permet pas de faire cette opération.
Va voir ça http://pastebin.com/3J7jaVmB cet exemple est pour moi le plus parlant en matière de flexibilité. J'estime qu'il est pas possible de faire plus simple pour le moment tout en aillant des performances et sans risque sécurité.
Dans le wiki, ce sont des modules nodejs avec une fonction qui renvoie un objet JavaScript. J'ai du mal à voir l'intérêt de cette approche. Ça va fait plus de bruit que juste un bout de JSON, mais sans permettre d'aller chercher des bouts de cette configuration dans un fichier, une base de données, une API Rest (il faudrait de l'asynchrone pour ça).
je ne comprend pas ce que tu dis :( Nous utilisons nodejs comme preloader à v8. Nos modules sont développés pour v8 et chargés par nodejs.
Pour la prise en charge de SSL, est-ce que cela inclut les trucs sympas comme le Forward Secrecy ou l'OCSP stapling ? Quelle est la bibliothèque SSL utilisée ? OpenSSL ? GnuTLS ?
Oui le PFS est supporté, il faut simplement lui demander d’honorer l'ordre d'utilisation des cyphers et de spécifier ECDHE. OpenSSL, mais on a rien senti de heartbleed car il est embarqué en static dans nodejs.
Sur la même machine ? Comment se répartissent-ils le boulot ?
Oui, j'aime dire que chaque processes est atomique à lui même, il n'y a aucun lock ni threads. Les processes communiques entre eux via un système IPC (qui s'étend au réseau via NPC). Tien tu veux voir le système IPC ? https://github.com/binarysec/gate/blob/master/src/lib/core/js/ipc.js il est intéressant d'aller voir celui de nginx ou apache...
[^] # Re: Quelques questions
Posté par Michael Vergoz . En réponse à la dépêche Proxy HTTP(s) gatejs. Évalué à 6. Dernière modification le 20 juin 2014 à 18:37.
gatejs est un bundle complet de proxy(ing) HTTP, en ce sens il regroupe des fonctionnalités de plusieurs soft tel que nginx ou squid.
Je ne me suis pas posé la question par rapport à haproxy, mais je pense qu’au-delà des performances la flexibilité ira au bénéfice de gatejs.
Les cas sont multiple mais globalement avoir des requêtes HTTP modifiables qui passent par du Javascript facilite énormément les taches de debug ou d'audit
Pour exemple, pour optimiser le cache il est essentiel de pouvoir regrouper les urls entre elles. Pour être encore plus précis, Grooveshark par exemple délivre les musiques via un système de post HTTP qui empêche pratiquement n'importe quel proxy de cacher cette données (la musique).
gatejs embarque un opcode store qui et comparable au vieux store_url de squid (qui n'est plus disponible maintenant) et qui été fort utile pour regrouper les URLs, cependant même lui ne permet pas de faire cette opération.
Va voir ça http://pastebin.com/3J7jaVmB cet exemple est pour moi le plus parlant en matière de flexibilité. J'estime qu'il est pas possible de faire plus simple pour le moment tout en aillant des performances et sans risque sécurité.
je ne comprend pas ce que tu dis :( Nous utilisons nodejs comme preloader à v8. Nos modules sont développés pour v8 et chargés par nodejs.
Oui le PFS est supporté, il faut simplement lui demander d’honorer l'ordre d'utilisation des cyphers et de spécifier ECDHE. OpenSSL, mais on a rien senti de heartbleed car il est embarqué en static dans nodejs.
À ca : https://github.com/binarysec/gate/blob/master/src/lib/http/js/pipeForward/headers.js
Et tu l'utilises comme ça dans un pipeline : https://github.com/binarysec/gate/wiki/OpcodeHeaders
Oui, j'aime dire que chaque processes est atomique à lui même, il n'y a aucun lock ni threads. Les processes communiques entre eux via un système IPC (qui s'étend au réseau via NPC). Tien tu veux voir le système IPC ? https://github.com/binarysec/gate/blob/master/src/lib/core/js/ipc.js il est intéressant d'aller voir celui de nginx ou apache...