Судя по описанию не созданы сами DNS зоны у хостера или DNS регистратора.
А вообще такие вещи гуглятся на раз, либо спрашиваются в техподдержке.
И как минимум нужно сначала провести тестирование DNS с помощью утилит nslookup и dig.
У вас все работает как и должно.
То, что вы задумали - возможно только через проксирование с использованием модуля nginx_stream.
А вообще вам нужно изучить, для чего сертификаты, как они работают.
Ну и nginx он reversE proxy, а не revers.
"На данный момент frontend открывает и по example.com и по api.example.com"
А почему не должен открывать, если DNS имя api.example.com смотрит на ваш сервер и в настройках nginx есть блок default_server, который обрабатывает все неописанные имена доменов.
При корректно настроенном listen 127.0.0.1:8080 nginx будет слушать порт только на внутреннем интерфейсе loopback и к нему физически не сможет прийти никто кроме 127.0.0.1.
Никакие allow здесь не нужны по факту.
Вопрос некорректный - у вас же наверняка кроме nginx есть как минимум какой-то fpm и БД, соответственно нужны лимиты и на них.
Все доступные лимиты отлично гуглятся, читайте документацию и думайте-подойдет ли вам такой путь или нет.
Для нормального распределения ресурсов есть виртуализация и контейнеризация.