у тебя два одинаковых server_name
должно быть
server {
server_name api.example.com;
listen 80;
listen 443 ssl;
и дальше уже можно по условиям разводить в разные места (если требуется)
}
При поиске виртуального сервера по имени, если имени соответствует несколько из указанных вариантов, например, одновременно подходят и имя с маской, и регулярное выражение, будет выбран первый подходящий вариант в следующем порядке приоритета:
точное имя
самое длинное имя с маской в начале, например “*.example.org”
самое длинное имя с маской в конце, например “mail.*”
первое подходящее регулярное выражение (в порядке следования в конфигурационном файле)