Если совсем на пальцах, то работает как-то так:
1. главный процесс создает слушающий сокет
2. главный процесс спавнит столько дочерних процессов, сколько указано в конфиге
3. каждый дочерний процесс путем опроса слушающего сокета через select\poll\epoll\kqueue получает соединение с клиентом(эта операция безопасна для доступа из нескольких процессов) и дальше с этим соединением работает исключительно этот процесс(в один тред) через те же select\epoll\kqueue
Ведь если убрать всю сложную логику обработки запроса, то все, что делает nginx - это пересылает байтики из одного сокета в другой. Тут многотредовость не нужна - более чем достаточно вот такого разбиения на несколько воркеров.