blob: 72301b2bf5dee752b9578a3034f1c253b7d514bf [file] [log] [blame]
willy tarreau9fe663a2005-12-17 13:02:59 +01001* x-forwarded-for
2* implémenter l'option "log global" au niveau proxy pour utiliser les logs
3 globaux.
4* matching case-insensitive
willy tarreaua1598082005-12-17 13:08:06 +01005* implémenter outgoing addr
6* loguer t_cnx, t_data, t_total
willy tarreau9fe663a2005-12-17 13:02:59 +01007+ factoriser la fonction de log (send_log = send_syslog+warning+alert)
8+ désactivation du keep-alive (suppression des ^Connection: et ajout des Connection: close)
9 -> 4 lignes (2 del, 2 add) suffisent.
willy tarreaua1598082005-12-17 13:08:06 +010010+ ne pas loguer certaines adresses IP sources
11 -> pour les health-checks uniquement -> pas de log pour les requêtes
12 vides (option dontlognull)
willy tarreau9fe663a2005-12-17 13:02:59 +010013- mesurer le tps consommé entre deux select, et fournir la conso CPU :
14 %cpu = 100 * (tpreselect(n+1)-tpostselect(n)) / (tpreselect(n+1)-tpreselect(n))
15- implémenter limitation fd dans la conf : setrlimit(RLIMIT_NOFILE, ...)
16- implémenter core/no-core dans la conf : setrlimit(RLIMIT_CORE, ...)
willy tarreau9fe663a2005-12-17 13:02:59 +010017- optimiser les regex pour accélérer les matches :
18 - compter les matches
19 - si match(n) & ([n].cpt > [n-1].cpt) & ([n].action == [n-1].action), swap(n,n-1)
20 - régulièrement, diviser tous les compteurs (lors d'un dépassement par exemple)
willy tarreau240afa62005-12-17 13:14:35 +010021- filtrage sur l'adresse IP source, et stocker le pointeur sur la dernière regex
22 matchée dans la "session" pour accélérer les regex.
willy tarreau9fe663a2005-12-17 13:02:59 +010023- gestion keep-alive
willy tarreau240afa62005-12-17 13:14:35 +010024
willy tarreaubc4e1fb2005-12-17 13:32:07 +010025+ handle parametrable HTTP health-checks replies
willy tarreau240afa62005-12-17 13:14:35 +010026- differentiate http headers and http uris
27- support environment variables in config file
28- support keep-alive
willy tarreau906b2682005-12-17 13:49:52 +010029- support SSL
willy tarreaua41a8b42005-12-17 14:02:24 +010030
31===================== demandes ==========================
32ok> 1) écoute sur une plage de ports :
33ok> listen XXX 1.2.3.4:21000-21060
34ok>
35ok> 2) écoutes multiples :
36ok> listen XXX 1.2.3.4:21000
37ok> bind 2.3.4.5:21001
38ok> bind 2.3.4.5:21000-21060
39ok>
40ok> => on en arrive à ceci :
41ok>
42ok> listen XXX [ address:port ]
43ok> bind addr:plage-port[,[addr:]plage-port]*
44ok> bind ...
45ok> ...
46ok>
47ok> => proxy->listen_fd et proxy->listen_addr doivent être
48ok> mis dans des listes
49ok> => OK pour listen, implémenter le BIND.
50ok>
51ok> 3) reconnexion sur le même port sur le serveur :
52ok>
53ok> server XXX 1.2.3.4[:port]
54ok> si <port> n'est pas spécifié, on utilise le même port que celui qui a reçu
55ok> la connexion. Dans ce cas, il faut pouvoir forcer le port du health-check
56ok> par un nouveau parametre "port".
57ok>
58ok> => ça permet les forwardings de plages :
59ok>
60ok> listen XXX
61ok> bind 1.2.3.4:10000-11000
62ok> server 1.2.3.5
63ok>
644) paramètres par défaut :
65 créer une section "defaults" qui précise les paramètres par défaut pour les
66 sections suivantes, concernant les paramètres suivants :
67 ok- les logs
68 ok- les modes (tcp/http)
69 ok- le balancing (round-robin/source)
70 ok- les time-outs
71 ok- maxconn
72 ok- redisp
73 ok- les options
74 ok- le retry
75 ok- les checks
76 - les options des serveurs ?
77 - les filtres et regex ?
78 - les cookies/captures
79
805) implémenter "balance source" pour faire un hash sur la source.
81
826) possibilité d'un process séparé par listen :
83 listen XXX
84 fork [ group_id ]
85
86le fait de spécifier group_id fera que toutes les instances utilisant le même
87identifiant de groupe seront gérées par un même processus.
88
897) gérer un chroot/uid/gid différents par process :
90 listen XXX
91 chroot /truc
92 uid 123
93 gid 456
94
958) beaucoup de paramètres pourraient être spécifiques aux serveurs et non
96 aux instances. Exemples :
97 - adresse IP source pour atteindre le serveur
98 - méthode de health-check (proto, port, ...)
99 - poids
100 - alerte en cas de disparition
101 - le nombre max de sessions à lui envoyer
102