-
Reverse Proxy python
Bonjour à tous,
Je viens demander conseil, car un projet m'a été imposé, il s'agit de développer un reverse proxy en python. Or je n'ai pas la moindre idée pour commencer. Avez - vous des idées, conseils, methodes?
Pour information, nous utiliserons le framework cherrypy.
J'entends déjà les personnes me disant mais ceci existe déjà en tout fait. Je répondrais: "Je l'ai déjà dit au chef, mais celui - ci ne veut rien entendre, il faut redévelopper".
Merci d'avance,
MyTux.
-
Salut
Haha, encore un chef qui ne veut utiliser que du matos fait maison... C'est bien dommage. A tout hasard, expose lui quand même Nginx.
Bon, venons en au fait...
Je connais mal CherryPy, je n'ai donc aucun conseil de ce côté là. J'imagine qu'il vous servira à parser les requêtes http.
Il y a un grand piège lorsqu'on fait un proxy http: les connections de type Keep-Alive. En résumé, le Keep-Alive est une demande du client pour pouvoir se servir d'une même connexion pour effectuer plusieurs requêtes.
Là où c'est délicat avec un proxy, c'est qu'on ne peut pas se satisfaire d'un simple forward de ce type de requête. Imagine le scénario:
Un client lambda envoie une requête Keep-Alive à ton proxy. Le proxy forward bêtement au serveur.
Le serveur, qui accepte gentillement ce Keep-Alive, renvoie le résultat de la requête et garde la connexion ouverte pour d'autres demandes.
Le proxy renvoie la réponse du serveur vers le client, qui considère que le Keep-Alive a été accepté, et envoie donc la requête suivante.
Or, si le proxy n'a pas reconnu la requête Keep-Alive, il va bien souvent attendre la fin de connexion du serveur ainsi que du client, sans réagir aux éventuelles nouvelles requêtes du client. Ca bouffe un socket au serveur, ça met en échec le client... bref c'est la catastrophe.
Je te conseille fortement de lire le livre HTTP: The Definitive Guide, des édition O'Reilly. C'est un excellent ouvrage sur le HTTP, qui traite du protocole, des serveurs, des proxies, des bots etc... Tu y trouveras également une explication plus détaillée (et certainement plus claire) du fait exposé plus haut.
-
Merci bien Antoine_935, je vais prendre mon mal en patience et faire comme je peux.