* x-forwarded-for * implémenter l'option "log global" au niveau proxy pour utiliser les logs globaux. * matching case-insensitive * implémenter outgoing addr * loguer t_cnx, t_data, t_total + factoriser la fonction de log (send_log = send_syslog+warning+alert) + désactivation du keep-alive (suppression des ^Connection: et ajout des Connection: close) -> 4 lignes (2 del, 2 add) suffisent. + ne pas loguer certaines adresses IP sources -> pour les health-checks uniquement -> pas de log pour les requêtes vides (option dontlognull) - mesurer le tps consommé entre deux select, et fournir la conso CPU : %cpu = 100 * (tpreselect(n+1)-tpostselect(n)) / (tpreselect(n+1)-tpreselect(n)) - implémenter limitation fd dans la conf : setrlimit(RLIMIT_NOFILE, ...) - implémenter core/no-core dans la conf : setrlimit(RLIMIT_CORE, ...) - optimiser les regex pour accélérer les matches : - compter les matches - si match(n) & ([n].cpt > [n-1].cpt) & ([n].action == [n-1].action), swap(n,n-1) - régulièrement, diviser tous les compteurs (lors d'un dépassement par exemple) - filtrage sur l'adresse IP source, et stocker le pointeur sur la dernière regex matchée dans la "session" pour accélérer les regex. - gestion keep-alive + handle parametrable HTTP health-checks replies - differentiate http headers and http uris - support environment variables in config file - support keep-alive - support SSL ===================== demandes ========================== ok> 1) écoute sur une plage de ports : ok> listen XXX 1.2.3.4:21000-21060 ok> ok> 2) écoutes multiples : ok> listen XXX 1.2.3.4:21000 ok> bind 2.3.4.5:21001 ok> bind 2.3.4.5:21000-21060 ok> ok> => on en arrive à ceci : ok> ok> listen XXX [ address:port ] ok> bind addr:plage-port[,[addr:]plage-port]* ok> bind ... ok> ... ok> ok> => proxy->listen_fd et proxy->listen_addr doivent être ok> mis dans des listes ok> => OK pour listen, implémenter le BIND. ok> ok> 3) reconnexion sur le même port sur le serveur : ok> ok> server XXX 1.2.3.4[:port] ok> si n'est pas spécifié, on utilise le même port que celui qui a reçu ok> la connexion. Dans ce cas, il faut pouvoir forcer le port du health-check ok> par un nouveau parametre "port". ok> ok> => ça permet les forwardings de plages : ok> ok> listen XXX ok> bind 1.2.3.4:10000-11000 ok> server 1.2.3.5 ok> 4) paramètres par défaut : créer une section "defaults" qui précise les paramètres par défaut pour les sections suivantes, concernant les paramètres suivants : ok- les logs ok- les modes (tcp/http) ok- le balancing (round-robin/source) ok- les time-outs ok- maxconn ok- redisp ok- les options ok- le retry ok- les checks - les options des serveurs ? - les filtres et regex ? - les cookies/captures 5) implémenter "balance source" pour faire un hash sur la source. 6) possibilité d'un process séparé par listen : listen XXX fork [ group_id ] le fait de spécifier group_id fera que toutes les instances utilisant le même identifiant de groupe seront gérées par un même processus. 7) gérer un chroot/uid/gid différents par process : listen XXX chroot /truc uid 123 gid 456 8) beaucoup de paramètres pourraient être spécifiques aux serveurs et non aux instances. Exemples : - adresse IP source pour atteindre le serveur - méthode de health-check (proto, port, ...) - poids - alerte en cas de disparition - le nombre max de sessions à lui envoyer