выделить каждому виртуальному хосту отдельный listening socket
на backend`е - это не поможет, потому что backend сначала делает
accept(), а только потом узнает имя виртуального хоста, на который
пришел этот запрос. поэтому надо будет делать каждому виртуальному
хосту выделенный apache, или - делать ограничение средствами nginx.
Выделить каждому хосту apache не всегда возможно (хостов может быть с десяток тысяч запросто). Насчет accept - не совсем понял. Ведь если у каждого виртуального хоста будет свой собственный внутренний ip (192.168.66.1 для *.aaa.ru, 192.168.66.2 для *.bbb.ru и т.д.), то ведь не нужно будет HTTP_HOST разбирать. Уточните, пожалуйста.