У меня в подобном мапе получается 500000 строк, размер файла 30Мб.
Для начала
server_names_hash_max_size 500000;
Т.е. тупо увеличивать эти параметры, пока nginx не перестанет ругаться,
все остальное он решит сам? ;)
Да. Если не будет хватать, скажем, пятикратного превышения, то можно
пробовать увеличивать server_names_hash_bucket_size.
На не особо нагруженном сервере с настройками:
map_hash_max_size 2048000;
map_hash_bucket_size 64;
nginx -t работал больше часа - видимо, строил хэш, после чего опять попросил
увеличить эти параметры. Как-то нереально долго он это делает при маленьких
hash_bucket_size. При 256 тоже задумывается надолго, а при 512 и более
отрабатывает за пару секунд.
Он тупо подбирает минимально возможный размер хэша.
Чем больше размер корзины, тем больше коллизий в неё помещается, поэтому
минимально размер хэща ищется быстрее.
Можно оставить 512. Можно попробовать 350, 400.
Игорь Сысоев
http://sysoev.ru